请解释这行代码:
mov dword[ss:rbp-0x0+var_m4], 0x0
据我了解:
答案 0 :(得分:3)
- it is a pointer
八九不离十。在汇编级别,“指针”的概念比在C或C ++等高级语言的级别上定义得不那么明确。但是,它正在进行地址算术来计算存储数据的地址。
- but where does it point to?
不知道。您必须查看之前的说明,var_m4
标签的值以及rbp
寄存器的当前内容以确定。
- what does ss::rbp-0x0+var_m4 mean?
它通过添加rbp
寄存器的当前内容,标签或常量值var_m4
以及立即值0
来计算内存地址。但ss:
段前缀表示它正在进行的任何操作。因此,它可能是对堆栈上分配的数组元素的引用,也可能是结构成员或类似内容的引用。
- rbp is the base pointer, right?
通常,虽然该寄存器可以溢出并重新用于函数体内的其他内容,具体取决于给编译器的优化级别和标志。