编译器能够编译大量的源代码.在编译阶段,这个巨大的代码在AST中被翻译. 我想如果代码很大,这个AST也会变得很大. 我们可以假设编译器永远不会因为构建AST并将其保留在内存中而在现代计算机上耗尽内存吗? 最佳答案 使用…
标签:compiler-construction
compiler-construction – 使用LLVM Alias和IFunc功能的任何实际例子?
我正在创建一个前端(现在玩具语言,也许永远都是)直接发出LLVM IR(不是通过C库). 我看了,但找不到声明和使用任何主题功能的真实实用的例子.我要做的最好的是Language Reference. 问题如标题所述. …
为什么C有这些奇怪的翻译限制(第2.2.4.1节)?
前几天我只是浏览C标准,关于翻译限制的章节让我感到难过.为什么有些翻译限制2 ^ n,其他2 ^ n 1和其他2 ^ n-k(对于一些小k)? 这里只是一些例子: > 15个复合语句的嵌套级别,迭代控制结构和选择控…
compiler-construction – 将antlr4与LLVM集成
我正在使用ANTLR和LLVM开发编译器.我已经使用ANTLR 4的 Eclipse IDE实现了词法分析器和解析器.我想使用LLVM实现语义分析器和代码生成器.为此,我想知道如何整合这两者. 我在网上看到的大多数项目都…
compiler-construction – 如何避免LLVM代码生成器执行不需要的常量折叠?
我想要实现的是避免一些常量(代表我的代码中的地址)的常量折叠,例如下面的100000000常量.我需要这个,因为稍后JIT编译的代码可能会被修补,这会因对象重定位而改变常量. 下面的代码是我尽最大努力避免不断折叠(不惜一…
解析 – 执行语义操作时,Ocamlyacc令牌不可见
我使用ocamlyacc作为一个小解析器,它也对大多数解析规则执行一些语义操作. 我在开始时定义了一组令牌: %token T_plus %token T_minus %token <int> T_int_c…
对象文件,链接器,存档等:我在哪里可以找到所有这些的入门级解释?
我认为自己是一位经验丰富的程序员;但是,到今天我完全无法解释目标文件是什么,或者它包含什么.我不知道为什么GCC需要-fPIC选项来创建共享库.我不知道链接器到底是什么,或者它是如何工作的.我不知道ranlib,libt…
如何将C代码编译为原始的无操作二进制文件?
考虑到C是一种系统编程语言,如何将C代码编译为原始x86机器代码,而这些代码可以在没有操作系统的情况下调用? (IE:您可以假设我有一个引导扇区,它将原始机器代码从磁盘加载到内存中,然后直接跳转到第一条指令). 现在,对…