質問

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