0

私は大学のためにしなければならないこの宿題に少し混乱しています。レジスタとは何か、メモリまたはレジスタにバイトを入れる理由は理解していますが、これについてプッシュするのに非常に役立ちます最初の演習:

(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の 16 進値を持ち、レジスタであり、2 番目のオペランドは前に何もないためわかりません。オペランド、それが取得する値がわからない。

4(%eax) はおそらくメモリ アドレスで、4 は変位です。この時点からはわかりません...

私の疑問が何であるかを理解するために必要なだけ明確であったことを願っています。提供された助けに感謝します。

よろしく、スーザ。

4

1 に答える 1

1

AT&T 構文を調べる必要があるようです。以下は、AT&T 構文メモリ オペランドを解釈する方法の簡単な説明です ( 「AT&T スタイル構文」の下)。

于 2012-04-27T03:38:57.820 に答える