函数main的汇编代码转储:
0x0000000100000de6 <main+0>: push %rbp
0x0000000100000de7 <main+1>: mov %rsp,%rbp
0x0000000100000dea <main+4>: sub $0x30,%rsp
0x0000000100000dee <main+8>: mov %edi,-0x14(%rbp)
我了解到mov %rsp,%rbp
表示move the value of rsp to rbp
但我知道在英特尔架构中,这意味着move the value of rbp to rsp
根据英特尔手册(英特尔架构软件开发人员手册。第2卷第3-104页MOV指令),mov a, b
应表示move b to a
下一个sub
提示是一样的。
我知道sub a,b
表示a = a-b
。但此处sub $0x30, %rsp
表示rsp = rsp - 0x30
我怎么了?
答案 0 :(得分:2)
你没有错。你在这里展示的是AT&amp; T语法中的汇编代码(google it up),其中操作数顺序与你在英特尔手册中看到的相反。