假设以下值存储在指定的内存地址和寄存器中:
Address Value Register Value
0x100 0xFF %eax 0x100
0x104 0xAB %ecx 0x1
0x108 0x13 %edx 0x3
0x10C 0x11
Fill in the following table showing the values for the indicated operands:
Operand Value //Solutions at the end of the chapter
%eax _____ //0x100
0x104 _____ //0xAB
$0x108 _____ //0x108
(%eax) _____ //0xFF
4(%eax) _____ //0xAB
9(%eax, %edx) _____ //0x11
260(%ecx, %edx) _____ //0x13
0xFC(,%ecx,4) _____ //0xFF
(%eax, %edx,4) _____ //0x11
有人可以用外行人的话向我解释如何做到这一点。这不是 hmwk(这是某些阅读中的练习问题,在本章末尾有答案),我只是不理解阅读。
AT&T x86 汇编语法的一般规则是
displacement(offset, relative offset, multiplier) = offset + displacement + ( relative offset * multiplier)
-
%eax
指寄存器的实际值(=0x100)。
-
0x104
指地址0x104处的值。
-
$0x108
指常量值0x108。
-
(%eax)
指地址EAX处的值,相当于0x100(=0xFF)。
-
4(%eax)
指地址EAX+4处的值,即0x104处。
-
9(%eax, %edx)
指地址EAX+9+EDX处的值,即0x10C处。
-
260(%ecx, %edx)
指地址 ECX+260 + EDX 处的值,即 0x108。
-
0xFC(,%ecx,4)
指地址(ECX*4)+0xFC处的值,即0x100处。
-
(%eax, %edx, 4)
指地址(EAX+(EDX*4)处的值,即0x10C处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)