1

函数 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

我怎么了?

4

1 回答 1

2

你没什么问题。您在这里展示的是 AT&T 语法中的汇编代码(google it up),其中操作数的顺序与您在英特尔手册中看到的相反。

于 2012-09-23T13:00:02.043 回答