C 代码分解器
C code decomposer
我想知道是否存在一个程序,可以通过用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。
据我了解,您所询问的功能在某种程度上是在编译器构造中实现的。原来的高级代码转换为中间 3 地址代码。我认为可以编写一个简单的解析器/编译器来做到这一点。这个月,我在编译器设计课程中编写了一个这样的程序。它是用 c 编写的,使用 flex(词汇分析器)和 bison(yacc)。
相关文章:
- 通过递归进行因子分解
- 下面的代码是如何工作的?它输出分解的数字并且功能齐全,我只是不明白它是如何做到的
- 有人可以帮助我分解这条代码
- (C++)分解这个简单的输入/输出代码:
- 分解 SDL 代码
- C++:在不传递一百万个参数的情况下分解代码
- 从模板中分解与参数无关的代码
- 将c代码的中间表示分解回c
- 将模板代码分解为单独的编译单元
- 如何将Qt代码分解为单独的部分
- 我能否对这C++代码的每一行中发生的事情有一个分解的解释
- 我有两个类似的类.你会使用什么设计来分解代码
- C 代码分解器
- 将此c++代码分解为单独的类规范文件和函数定义文件
- C++模板:一个按类列出的列表,如何分解代码
- 需要一个使用gsl-LU分解获得平方矩阵逆的示例代码
- 如何正确地分解代码
- 函子和代码分解
- 帮助分解代码
- 使用元数据/继承分解出跨多个类的代码