Pointers 组件x86“;()";意思

Pointers 组件x86“;()";意思,pointers,assembly,x86,Pointers,Assembly,X86,我试图对汇编语言有一个初步的了解,但有几件事我遇到了麻烦,无法找到对我有意义的在线资源 “离开”命令的作用是什么 我知道: (R) =Mem[Reg[R]] 其中R是寄存器,但我不知道正确的部分是什么意思。这是取消登记簿的引用吗 对于堆栈帧,参数是否始终为负?局部变量是否始终为正?返回地址是否总是(4+VAR1)?(VAR1是第一个参数的地址)“leave”-这是一个汇编程序指令,用于在汇编过程中与“enter”一起使用 Reg[R]-它只是寄存器R,如si、esi或rsi,但如果您查看指令操作

我试图对汇编语言有一个初步的了解,但有几件事我遇到了麻烦,无法找到对我有意义的在线资源

“离开”命令的作用是什么

我知道:

(R) =Mem[Reg[R]]

其中R是寄存器,但我不知道正确的部分是什么意思。这是取消登记簿的引用吗

对于堆栈帧,参数是否始终为负?局部变量是否始终为正?返回地址是否总是(4+VAR1)?(VAR1是第一个参数的地址)

“leave”-这是一个汇编程序指令,用于在汇编过程中与“enter”一起使用

Reg[R]-它只是寄存器R,如si、esi或rsi,但如果您查看指令操作码,可能会有一个用于选择寄存器的位字段,如果您调用该位字段值R,则Reg[R]将表示由位字段选择的寄存器


堆栈帧-这是可选的。有些编译器可以选择不使用堆栈帧。如果启用堆栈帧,则函数开始时的通常顺序是“推ebp”,然后是“mov ebp,esp”,因此[esp]=ebp的上一个值,ebp offset用于访问参数,ebp+offset用于访问局部变量。如果未使用帧,则esp的正偏移量或零偏移量用于参数和局部变量。

leave
是一条单字节指令,相当于

    movl %ebp, %esp
    popl %ebp
在32位模式下。在16位或64位模式下,这与16位或64位寄存器相同