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生产线包含三个部分。在组装级别进行思考时,有助于将它们分开。一个简单的方法是重写foras a 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通常实现为条件和跳转(或条件跳转,如果您的平台支持此类操作)。如果条件为真,则进入循环;如果条件为假,则跳过循环(跳到末尾)。a 的底部while只是无条件跳回循环顶部。

于 2012-04-16T23:33:35.523 回答