x86_64下为什么mov %rsp, %rbp是48 89 e5?

阿达King哥 2020-09-05 05:05:04
请问汇编语言
movq %rsp, %rbp
对应的16进制为什么是
48 89 e5
?
...全文
794 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主的理解是错误的,按你这么理解“48就是mov”... 指令编码就太长了,指令集平均下来还不如RISC定长指令的设计了。
zara的解释是对的,只是以楼主现在的水平还理解不了。简单说就是,因为在64位模式下,仍然大量使用32位运算,所以当初AMD设计x64架构的时候,决定64位模式下的操作数尺寸默认仍然是32位的,地址尺寸默认是64位的,如果需要64位操作数的指令,则使用rex.w前缀扩展。这样程序的平均指令长度会减小一些...
阿达King哥 2020-09-07
  • 打赏
  • 举报
回复
下载了Intel的指令集手册,看了一下。48就是mov, 89表示寄存器到内存/寄存器,最后表示的是源和目的的计算值
zara 2020-09-05
  • 打赏
  • 举报
回复
64位,指令真的好乱哦,看的是头昏脑胀的。
48 是所谓的 REX. 前缀指令吧,40 是固定的,8 是 W 位为 1,指定了 64位操作数,其它位(R, X, B)寻址扩展位吧,全 0 ;89 e5 就是指令本体了。

21,496

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧