1

x86アセンブリを使った私の物語は続きます。私はこのコードで無限ループに入り、少し戸惑っています。

movl $1, %ecx
movl $4, %edi

do_loop:
   cmpl %edi, %ecx
   je do_exit
   .........
   do_stuff
   .........
   incl %ecx
   jmp do_loop
do_exit:

do_exitへのジャンプを期待しています: %ecxが4に達すると、反復ごとに増分されるため

4

3 に答える 3

1

デバッガーはありませんか?do_stuffは%ediを変更しますか?do_stuffをコメントアウトしてみてください。

于 2011-01-13T07:43:03.827 に答える
0

do_exitの後にブランクが続くかどうかはわかりません。また、アセンブリコードをどのように実行しているかわかりません...

ただし、do_exitの後に次を追加してみてください。

離れる

ret

于 2011-01-13T14:13:44.067 に答える
0

他の人が述べているように、のレジスタの使用には注意してdo_stuffください。そして、あなたが探している本物は、規約、特にこの行を 呼び出すことです:

レジスタEAX、ECX、およびEDXは、関数で使用できます。

于 2011-01-14T07:15:54.353 に答える