您好我正在尝试自己学习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
}
}
答案 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=0
和i++
行转换为汇编。唯一剩下的就是while
。 while
的顶部通常实现为条件和跳转(或条件跳转,如果您的平台支持此类操作)。如果条件为真,则进入循环;如果条件为假,则跳过循环(跳转到结尾)。 while
的底部只是无条件地跳回到循环的顶部。