免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2318 | 回复: 0
打印 上一主题 下一主题

rhel4(x86_64)里面的 as 是否已经不支持 pushl、popl 指令? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-14 23:10 |只看该作者 |倒序浏览
比如这样的指令:

pushl %eax
pushl $output

在,x86_64 里面编译出错,说是
Assembler messages:
Error: suffix or operands invalid for 'push'

最后要改成

pushq %rax
pushq $output

才能编译通过。可是它怎么会跟以前完全不兼容呢?

同样在 amd64 的 FreeBSD 6 里面也是这样出错,只有在 i386 的 redflag 4.1里面才完全没问题。

除了这个,还有 gdb 也有些问题。比如:
.data
value: .int 1

movl value, %ecx

在 i386 的 Linux 里面用 gdb,print/x $ecx 可以看到 $1 = 0x0 这样的正确数值,而且在 x86_64 的 Redhat 和 amd64 的 FreeBSD 里面,print/x $ecx 会显示 $1 = value can't converted integer 这样的说明,只能用 info  registers 来看(可以看到显示为 rcx 为 0x1)。必须要改成 movq value, %rcx 才能用 print/x $rcx 查看难道这些 32 位的都已经不兼容了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP