我想知道是否存在一个程序可以通过将所有循环和函数调用替换为 goto 语句来将 c 源代码分解为较低级别的代码。因此,它将代码减少为变量声明/堆分配、if 语句、goto 语句和逻辑/算术函数。
我认为这样的程序对于设计解释 C 代码的虚拟机很有用。
例子:
for(int a = 0; a < 100; a++){
printf("Hello");
}
会变成
int a = 0;
if(!(a<100)){
goto endForLoopOne;
}
forLoopOne:
printf("Hello");
if(a<100){
a++;
goto forLoopOne;
}
endForLoopOne:
最佳答案
gcc
和 clang
(或可能许多其他编译器)允许您从 c 源代码获取汇编输出。
在 gcc 中 -S 标志将生成一个 .s
文件。
gcc -S <your c source>
汇编的语法将是 AT&T。
关于c++ - C代码分解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119087/