addr 与 offset 异同

来源:互联网 发布:c语言的优缺点 编辑:程序博客网 时间:2024/04/30 10:08

addr 与 offset

相同点:

均用于获取偏移地址

不同点:

1.offset 仅用于获取全局变量的地址;而addr既可以用于局部变量也可以用于全局变量,当用于局部变量时,addr 会转化成

lea    eax,operand

push   eax      (注:此前不应使用 eax ,以防止 eax 数据被覆盖)

当用于全局变量时,相当于 offset

2.addr 只能用于调用函数(invoke), 不能用于赋值操作;而 offset 可以用于任何涉及偏移地址的地方

3.addr 是运行阶段在堆栈中分配内存空间,offset 是编译阶段由编译器解释。因此,addr 可以处理局部变量而 offset 则不能

4.addr 不能处理向前引用(即 addr 引用的操作数必须在使用 addr 前就得定义或声明),而 offset 则能处理

5.为防止意外,尽量除局部变量使用 addr 外,其它均使用 offset 

原创粉丝点击