2012-04-27 65 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」)下的簡短說明。