函数 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
我怎么了?