社区
汇编语言
帖子详情
x86_64下为什么mov %rsp, %rbp是48 89 e5?
阿达King哥
2020-09-05 05:05:04
请问汇编语言
movq %rsp, %rbp
对应的16进制为什么是
48 89 e5
?
...全文
794
3
打赏
收藏
x86_64下为什么mov %rsp, %rbp是48 89 e5?
请问汇编语言 movq %rsp, %rbp 对应的16进制为什么是 48 89 e5 ?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
日立奔腾浪潮微软松下联想
2020-09-07
打赏
举报
回复
楼主的理解是错误的,按你这么理解“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 就是指令本体了。
Linux汇编基础--转载
1、AT&T格式汇编 在 Unix 和 Linux 系统中,更多采用的还是 AT&T 格式,两者在语法格式上有着很大的不同: 在 AT&T 汇编格式中,寄存器名要加上 '%' 作为前缀;而在 Intel 汇编格式中,寄存器名不需要加前缀。例如: AT&T 格式 Intel 格式 pushl %eax push eax ...
x86
寄存器说明
指针寄存器: (1)BP为基指针(BasePointer)寄存器,用它可直接存取堆栈中的数据; (2)SP为堆栈指针(StackPointer)寄存器,用它只可访问栈顶。
RBP
、
RSP
:
64
位,EBP、ESP32位,BP、SP16位 %rax 作为函数返回值使用。 %
rsp
栈指针寄存器,指向栈顶 %rdi,%rsi,%rdx,%rcx,%r8,%r9 用作函数参数,依次对应第1参数,第2参数。。。。当参数超过6个时,参数会向地址压栈。(下面有例子可以看) %rbx,%
rbp
,%r12,%
X86
_
64
栈和函数调用
Intel 系列处理器通常称为
x86
,目前常用的笔记本或台式机都是
64
位的处理器,这些处理器使用的机器语言一般都是
x86
_
64
,我记得以前学习微机原理课的时候,学习的还是 8086 处理器上的汇编。8086 是Intel的第一代16位的处理器,只有8个16位的寄存器,而现在的
64
位处理器对其进行了扩展,共有16个
64
位的寄存器。需要注意这里的栈是倒着画的,栈顶在下面,栈顶的内存地址是更小的,换句话说栈增长的方向是内存地址减小的方向。寄存器,这个寄存器中存储着栈顶的地址。到这里,函数栈情况如下图。
汇编:assembly (intel
x86
/
x86
_
64
)
文章目录寄存器指令SAR示例 寄存器 指令 SAR The shift arithmetic right; 算术右移, 示例 63535:
48
c1 f9 3f sar $0x3f,%rcx ///Shift Without Affecting Flags,将RCX(
64
位)右移0x3f(63)位;
x86
_
64
架构下函数调用过程分析
//被分析的C程序 int test1(int a1,int b1) { int c1; c1 = a1+b1; return c1; } int test2(int a2,char b2) { int c2; c2 = test1(30,40); return c2; } int main(int argc,char **argv) {
汇编语言
21,496
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章