请教一个x64汇编的问题啊~

发布于 2022-09-23 14:43:50 字数 246 浏览 12 评论 0

小弟我最近在学习汇编语言,实际操作的机器是台core2,安的是x86_64的linux。但在实践的时候,发现寄存器和指令的命名和书上讲的有点区别(书上用的是x86的)。
比如,
我发现x64下貌似pushl不了%eax。
x64下可以用mov,push等,但书上却只讲了,movl,movb和movw。
x64下寄存器貌似用的是%rax,%rbx,%rsp等。

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

请爱~陌生人 2022-09-30 14:43:51

谢谢回馈。

转身以后 2022-09-30 14:43:50

原帖由 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。这是怎么回事啊?

终止放荡 2022-09-30 14:43:50

rax是64位寄存器,eax是低32位。看看AMD或者Intel的手册吧。
在x64下可以使用,movl $1, %eax,但不能pushl %eax?x64我也不熟,等待mik和ald吧。

一枫情书 2022-09-30 14:43:50

movl $1, %eax
movl是mov一个双字,4字节的。可以
pushl %eax
pushl是push一个双字,x86的通用寄存器恰好双字,OK。但是x64的通用寄存器是8字节的,要pushq,q代表8字节。不可以push半个寄存器。
x86在32位模式下下可以push一个寄存器的低16位或者低8位么?x64不能,为了就是电路上更简单。

韬韬不绝 2022-09-30 14:43:50

原帖由 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的相关资料。我是新手,别笑话我啊,呵呵。

旧情别恋 2022-09-30 14:43:50

原帖由 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~
太感谢了……赶紧去充电去……

时光无声 2022-09-30 14:43:50

原帖由 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文