0

我对我必须为大学做的这项家庭作业感到有些困惑,我了解寄存器是什么,为什么要在内存或寄存器中放置一些字节,但对我推动这一点会有很大帮助第一个练习:

(Gnu 组装):

| address  || Value |
|  0x100   || 0xFF  |
|  0x104   || 0xAB  |
|  0x108   || 0x13  |
|  0x10C   || 0x11  |


| Register|| Value |
|  %eax   || 0x100 |
|  %ecx   ||  0x1  |
|  %edx   ||  0x3  |

用指示的操作数的相应值填写下表:

|  Operand     || Value |
|   %eax       ||
|   0x104      ||
|  $0x108      ||
|  (%eax)      ||
|  4(%eax)     ||
| 9(%eax,%edx) ||
|260(%ecx,%edx)||
|0xFC(,%ecx,4) ||
|(%eax,%edx,4) ||

通过查看,我可以看出第一个操作数的十六进制值为0x100并且是一个寄存器,第二个我无法分辨,因为之前没有,第三个操作数有一个美元标志,我读到它是一个立即数操作数,无法判断它得到什么值。

4(%eax) 它可能是一个内存地址,其中 4 是位移,从这一点上我不知道......

我希望我尽可能清楚地了解我的疑问,并非常感谢您提供的任何帮助。

亲切的问候,苏萨。

4

1 回答 1

1

似乎您需要查找 AT&T 语法。下面是关于如何解释 AT&T 语法内存操作数的简短描述(在“AT&T 样式语法”下)。

于 2012-04-27T03:38:57.820 回答