c++ - C代码分解器

标签 c++ c

我想知道是否存在一个程序可以通过将所有循环和函数调用替换为 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:

最佳答案

gccclang(或可能许多其他编译器)允许您从 c 源代码获取汇编输出。
在 gcc 中 -S 标志将生成一个 .s 文件。

gcc -S <your c source>

汇编的语法将是 AT&T。

关于c++ - C代码分解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119087/

相关文章:

c++ - 返回类型不完整的调用方法和我无法解释的模板解决方法

c++ - (C++) 为相等元素的快速排序添加随机性

c++ - 在 C++ 中将二进制字符串输出到二进制文件

c - 如何重新格式化代码以正确输出?

c - 'one but not both' 的正确写法是什么情况?

c - 将 system() 用于 C 中的数据库脚本是一种好方法吗?

C++ gdb 错误读取变量 : Cannot access memory at address

c++ - 如何创建用于多个源文件的全局变量/包含/函数

c - 什么是 servaddr.sin_addr.s_addr=INADDR_ANY

c - 如何将文本文件中一行中的整数分配给c中的变量?