我们都知道在开启了分段与分页的保护机制后,每个地址是由段选择符与32位偏移量组成
那么如下形式的一条指令究竟是怎么赋值的,比如有个地址$addr
movl $addr,%eax
这里赋给eax的是??相对于当前ds选择符所指段基地址的偏移量吗?还是说其他?
------解决方案--------------------------------------------------------
将符号addr的偏移地址放入eax中。
比如说你的addr定义在data段中:
.data
addr DWORD 0
我这个是intel汇编语法,at&t的类似。
假设addr在DS段的offset是0x20000,则将0x20000放入eax.
注意ds值并没有放入,这在实际寻址时再计算。
only 偏移地址