Question

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.

Était-ce utile?

La solution

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").

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top