免费注册 查看新帖 |

Chinaunix

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

请教一个x64汇编的问题啊~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-24 23:24 |只看该作者 |倒序浏览
小弟我最近在学习汇编语言,实际操作的机器是台core2,安的是x86_64的linux。但在实践的时候,发现寄存器和指令的命名和书上讲的有点区别(书上用的是x86的)。
比如,
我发现x64下貌似pushl不了%eax。
x64下可以用mov,push等,但书上却只讲了,movl,movb和movw。
x64下寄存器貌似用的是%rax,%rbx,%rsp等。

请问哪里可以找到详细介绍这些差别的文档的地方啊,谢谢了。

论坛徽章:
0
2 [报告]
发表于 2009-01-24 23:29 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2009-01-24 23:44 |只看该作者
原帖由 prolj 于 2009-1-24 23:29 发表
Intel语法和AT&T语法的区别。
http://www.moon-soft.com/program/bbs/readelite9681.htm
http://blog.csdn.net/robin_qiu/archive/2006/03/02/613904.aspx

这位兄台,intel和att的区别我大概知道的,可我问的不是这个啊。我问的是x86和x64的一些区别。比如%eax和%rax。比如在x64下,怎么使用%eax等。

补充一点,我在x64下可以使用,movl $1, %eax,但不能pushl %eax。这是怎么回事啊?

论坛徽章:
0
4 [报告]
发表于 2009-01-24 23:54 |只看该作者
rax是64位寄存器,eax是低32位。看看AMD或者Intel的手册吧。
在x64下可以使用,movl $1, %eax,但不能pushl %eax?x64我也不熟,等待mik和ald吧。

论坛徽章:
0
5 [报告]
发表于 2009-01-25 00:07 |只看该作者
movl $1, %eax
movl是mov一个双字,4字节的。可以
pushl %eax
pushl是push一个双字,x86的通用寄存器恰好双字,OK。但是x64的通用寄存器是8字节的,要pushq,q代表8字节。不可以push半个寄存器。
x86在32位模式下下可以push一个寄存器的低16位或者低8位么?x64不能,为了就是电路上更简单。

论坛徽章:
0
6 [报告]
发表于 2009-01-25 00:29 |只看该作者
原帖由 prolj 于 2009-1-25 00:07 发表
movl $1, %eax
movl是mov一个双字,4字节的。可以
pushl %eax
pushl是push一个双字,x86的通用寄存器恰好双字,OK。但是x64的通用寄存器是8字节的,要pushq,q代表8字节。不可以push半个寄存器。
x86在32位 ...

哦~非常感谢啊。其实道理我还是懂的,就是想知道哪里可以找到比如介绍pushq这些指令的资料,总不能一个一个试吧,呵呵。我下了intel的手册3卷,不过貌似是讲32位的。能否请教一下哪里能找到x64的相关资料。我是新手,别笑话我啊,呵呵。

论坛徽章:
0
7 [报告]
发表于 2009-01-25 00:37 |只看该作者

论坛徽章:
0
8 [报告]
发表于 2009-01-25 00:39 |只看该作者
原帖由 prolj 于 2009-1-25 00:37 发表
http://developer.intel.com/products/processor/manuals/index.htm
32、64都有讲
http://developer.amd.com/documentation/guides/Pages/default.aspx
AMD的优化手册不错,manual结构很清晰。

OK~
太感谢了……赶紧去充电去……

论坛徽章:
0
9 [报告]
发表于 2009-01-25 01:46 |只看该作者
原帖由 prolj 于 2009-1-25 00:37 发表
http://developer.intel.com/products/processor/manuals/index.htm
32、64都有讲
http://developer.amd.com/documentation/guides/Pages/default.aspx
AMD的优化手册不错,manual结构很清晰。

我又找了下,发现对于这个问题,as的文档其实也是一个不错的选择,很简介
http://sourceware.org/binutils/docs-2.18/as/index.html

论坛徽章:
0
10 [报告]
发表于 2009-01-25 02:05 |只看该作者

回复 #9 破碎细胞 的帖子

谢谢回馈。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP