7

次の命令をコンパイルする場合:

movl 4(%ebp), 8(%ebp)

取得したメモリ参照が多すぎます

どうしたの?

4

3 に答える 3

9

括弧の前の数字はバイトオフセット(これによりメモリ参照が発生します)であり、2つを。で持つことはできませんmovl。最初に値を一時的にレジスタに移動する必要があります。

movl 4(%ebp), %ecx
movl %ecx, 8(%ebp)
于 2010-03-28T02:31:35.230 に答える
2

法的な指示ではありません。メモリを参照するほとんどの命令では、メモリをレジスタとの間で移動する必要があります。

于 2010-03-28T02:30:56.557 に答える
2

movlメモリには移動しません-メモリは移動します。レジスタを経由する必要があります(したがって、2つのmovl命令が必要です)。

于 2010-03-28T02:31:27.940 に答える