0

こんにちは私は現在、自分で c++ のアセンブリを学ぼうとしています。私のプロジェクトには、現在高レベルの c++ for ループにあるアセンブリ コードがあります。可能であれば、これを完全にアセンブリに変換する助けが必要です。現在のコードは次のとおりです。

char temp_char;
for (int i = 0; i < length; i++){
    temp_char = characters [i];
    __asm {                         
        push eax    
        push ecx
        movsx ecx,temp_char
        movsx eax,key   
        push ecx    
        push eax
        call test
        add esp, 8
        mov temp_char,al
        pop ecx 
        pop eax
    }
}
4

1 に答える 1

1

ラインforには 3 つの部分があります。アセンブリ レベルで考える場合、これらを分解すると役立ちます。forこれを行う簡単な方法は、を として書き直すことwhileです。

char temp_char;

int i = 0;
while (i < length) {
    temp_char = characters [i];
    __asm {                         
        push eax    
        push ecx
        movsx ecx,temp_char
        movsx eax,key   
        push ecx    
        push eax
        call test
        add esp, 8
        mov temp_char,al
        pop ecx 
        pop eax
    }
    i++;
}

int i=0andi++行をかなり簡単にアセンブリに変換できるはずです。残っているのはwhile. a の先頭whileは通常、条件およびジャンプ (プラットフォームがそのような操作をサポートしている場合は条件付きジャンプ) として実装されます。条件が真の場合、ループに移動します。条件が false の場合、ループをスキップします (最後にジャンプします)。a の下部はwhile、ループの先頭に戻る無条件のジャンプです。

于 2012-04-16T23:33:35.523 に答える