2012-04-27 64 views
0

我对这个为大学做的家庭作业感到有点困惑,我明白寄存器是什么,为什么要把一些字节放在内存或寄存器中,但是将是一个很大的帮助,让我对这个第一个练习一推:在Linux中从IA32访问操作数和操作

(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作为位移,从这个角度我不知道......

我希望我能像必要的,因为清楚地明白我的疑惑是,非常感谢您提供的帮助。

亲切的问候, 索萨。

回答

1

似乎您需要查看AT & T语法。 Here是如何解释AT & T语法内存操作数(在“AT & T Style Syntax”)下的简短说明。