从头开始在汇编中编写for循环

时间:2012-04-16 23:16:26

标签: c++ visual-studio visual-c++ assembly for-loop

您好我正在尝试自己学习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
    }
}

1 个答案:

答案 0 :(得分:1)

您的for行有三个部分。在集合层面思考时,有助于将这些分开。一种简单的方法是将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=0i++行转换为汇编。唯一剩下的就是whilewhile的顶部通常实现为条件和跳转(或条件跳转,如果您的平台支持此类操作)。如果条件为真,则进入循环;如果条件为假,则跳过循环(跳转到结尾)。 while的底部只是无条件地跳回到循环的顶部。