你能解释一下'动作dword [ss:rbp-0x0 + var_m4],0x0'呢?

时间:2013-06-10 18:40:07

标签: assembly

请解释这行代码:

mov dword[ss:rbp-0x0+var_m4], 0x0

据我了解:

  • 它是一个指针
  • 但它指向哪里?
  • ss :: rbp-0x0 + var_m4是什么意思?
  • rbp是基指针,对吧?

1 个答案:

答案 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?

通常,虽然该寄存器可以溢出并重新用于函数体内的其他内容,具体取决于给编译器的优化级别和标志。