前面反编译分别使用goto,for语句实现了语句跳转和循环,接下来分析使用while do语句是否可以:
#include <stdio.h> int main(int argc, char** argv) { int r2; int r5 = 300; int r6 = 20; int r4 = 0; while(r4<=r5) { r2 = (r4*5 - 160)/9; printf("%d\t%d\n", r4, r2); r4 += r6; } return 0; } 使用IDA打开编译生成的.o文件:
结果发现,汇编结果是一样的,说明while do语句也可以实现。
当然,作为尝试,r2定义到while语句中结果并没有发生变化。