2012-03-22 13 views
0

私たちが知っている通り、loop X命令はXからECX = 0までです。Assembler-loop with ECX

私の質問 - ループ命令は、最初に何をすべきか:ECXの== 0

意味は、以下の何がcorectの場合ECXをデクリメント、またはチェック

最初

ECX = ECX - 1; 
    if ECX > 0 
     go to X 

if ECX > 0 { 
     ECX = ECX - 1; 
     fo to x; } 

ありがとうございます。

+3

最初です。 Protip: 'loop'を使わないでください。遅いです。 – harold

+0

@haroldは私の答えのように聞こえる。 –

+0

[なぜ 'loop'が遅いのかQ&A](https://stackoverflow.com/questions/35742570/why-is-the-loop-instruction-slow-couldnt-intel-have-implemented-it-efficiently) –

答えて

3

最初です。 Intelのマニュアル2Aから:

LOOP命令が実行されるたびに、カウントレジスタがデクリメントされ、その後、 は、カウントが0の場合、ループは終了し、プログラムの実行 は、次の命令を続行している0をチェックLOOP命令。カウントが0でなければ、 は目標(目標)オペランドに近いジャンプが実行され、おそらくループの開始時の命令は である。

関連する問題