2012-04-27 2 views
0

Я немного смущен этой домашней работой, которую я должен сделать для колледжа, я понимаю, что такое регистр, зачем помещать некоторые байты в память или в регистр, но бы большую помощь, чтобы дать мне толчок на этом первом упражнении:Доступ к операндам и операциям из IA32 в Linux

(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 является смещение, с этой точки я понятия не имею ...

Я надеюсь, что я был ясно, как надо понимать, что мои сомнения , и большое спасибо за любую предоставленную помощь.

С уважением, Souza.

ответ

1

Кажется, что вам нужно найти синтаксис AT & T. Here - краткое описание интерпретации AT & T операндов памяти синтаксиса T (под "AT & T Синтаксис стиля").

Смежные вопросы