문제

I'm getting a bit confused with this homework i have to do for college, i understand what a register is, why to put some bytes in the memory or in the register, but would be a great help to give me a push on this first exercise:

(Gnu assembly):

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


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

Fill out the following table with the corresponding values for the operands indicated:

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

What i can tell by looking at this is that the first operand has the hexadecimal value of 0x100 and is a register, the second one i can't tell because has nothing before, the third operand has a dollar flag, i read it's an immediate operand, can't tell what value it gets.

The 4(%eax) it's probably a memory address with the 4 being the displacement, from this point i have no idea...

I hope i was as clear as necessary to understand what my doubts are, and thanks very much for any help provided.

Kind Regards, Souza.

도움이 되었습니까?

해결책

Seems that you need to look up the AT&T syntax. Here is a short description of how to interpret AT&T syntax memory operands (under "AT&T Style Syntax").

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top