标签[compiler-construction]

标记“编译器构造”应应用于有关编译器编程的问题或有关编译器详细内部工作的问题。 请勿使用有关*使用*特定编译器或编译错误的问题。

0
0回复
14

IR重写有什么问题:MOVE(e1,ESEQ(s,e2))->SEQ(s,MOVE(e1,e2))

我正在自己阅读 Appel 的“机器学习中的现代编译器设计”。 我被困在练习题 8.5: 移动节点的左侧实际上代表一个目的地,而不是一个表达式。 因此,以下重写规则不是一个好主意: MOVE(e1,ESEQ(s,e2)) -> SEQ(s, MOVE(e1, e2)) if s, e1 Co
2
0回复
38

GCC使用什么代替GEP?

在两个最著名的 C 编译器中,LLVM 使用有点臭名昭著的getelementptr指令处理复合对象元素的地址计算,这可能在https://blog.yossarian.net/2020/09/19/LLVMs- 中讨论得最getelementptr 按示例获取元素但基本上,就我所见,GEP 最显着
0
1回复
34

Flutterandroid生成的.so文件里面有什么?

我已经阅读了@mraleph 的文章,但仍然无法理解 Flutter android 生成的.so文件中的内容。 我做了一个实验:对于我自己的应用程序,我从 apk 文件中提取 .so ( mkdir -p 07260818_apk_unzip && unzip 07260818.a
0
1回复
33

Dart堆栈跟踪都以3/7/b/f(ARM架构)结尾,而我们知道ARM/Thumb/Thumb(2)指令是2或4个字节-这怎么会发生?

我看到,Dart 堆栈跟踪都以 3/7/b/f(ARM 架构)结尾,而我们知道 ARM/Thumb/Thumb(2) 指令是 2 或 4 个字节。 示例: https : //github.com/dart-lang/sdk/issues/43274 因此,我想知道这怎么会发生? 恕我直言,ARM
0
0回复
69

即使程序在编译阶段后加载到内存中,C编译器如何知道内存位置?[复制]

这个问题在这里已经有了答案: x86 程序集中的 .data 部分1 个回答 加载时间重定位和虚拟内存1 个回答 如何在编译/链接时使用地址
-1
0回复
17

为以下代码生成3地址代码[关闭]

关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来
0
0回复
31

如何使用clang-12编译GTK4?

通常你编译 GTK 是这样的: 但我喜欢使用clang-12的原因比gcc 所以,这就是我尝试过的(似乎很明显): 它有点工作,但它有一个问题:当 GTK4 程序用clang-12编译时,程序的分辨率非常低,而且它很慢,几乎不可能退出应用程序,因为它没有响应这里是截图: 但是使用gcc看起来不错:
-2
0回复
46

解释语言到编译语言[关闭]

关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来
0
0回复
21

带有块参数的SSA表单的名称

现在大多数命令式语言的优化编译器都使用静态单赋值形式,其中每个变量只在一个地方赋值。 传统上,SSA 使用 phi 节点来协调这与可以在循环中重复分配变量的要求。 然而,最近已经做了一些工作,而不是允许基本块有参数。 它们在表达能力上形式上是等价的; 块参数使某些事情比 phi 节点更容易一些,但代
0
1回复
21

EBNF中的终端是直接搜索的吗?[关闭]

关闭。 这个问题需要细节或清晰。 它目前不接受答案。 想改善这个问题吗? 通过编辑此帖子添加详细信息并澄清
0
0回复
28

Bison/Flex中的If/Then语句和switch语句

编辑:if 语句正在工作,在 values.cc 中的evaluateRelational() 中用“==”拼写相等和用“!=”拼写不等之后。 谢谢@rici! 现在为 switch 语句... 我一直在尝试在 Bison/Flex 编译器中实现 if-then 语句和 switch 语句。 我很困
0
0回复
23

编译器真的可以识别时间复杂度的改进并在幕后实现它们吗?

我记得在这里读过一篇关于现代编译器有多好的文章。 该帖子中提供的示例引用了一个与此类似的示例程序: 他们声称这可以通过现代编译器进行优化。 按原样编写,上述函数的运行时间为 O(n),但此人声称如今的优秀编译器会将其转换为常数时间运算,并认识到整数之和可以通过高斯公式执行 并且会像这样在幕后实现这个
2
0回复
38

elixir:eval_forms和compileinelixir_compiler的区别

在elixir_compiler.erl (和其他一些地方)中,代码的编译以两种不同的方式完成。 以下代码在两者之间切换: eval_forms(Forms, Args, E) -> case (?key(E, module) == nil) andalso allows_fast_comp
-2
0回复
33

如何创建从C#到另一种语言的转译器?[关闭]

关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来
-2
0回复
27

有什么好的学习资源可以编译为.NETCIL吗?[关闭]

关闭。 此问题不符合Stack Overflow 准则。 它目前不接受答案。 想改善这个问题吗? 更新问题
2
1回复
32

是否应该将每个可能的Ascii字符添加到有限自动机的转换表中

我正在尝试实现一个确定性有限自动机来为一个项目创建一个词法分析器。 在 C++ 中创建转换表时,我创建了一个映射,该映射使用当前状态作为键,并将可能的转换作为另一个映射存储在值中。 我是否必须为所有状态的每个可能输入添加所有可能的转换,或者是否有更有效的方法来完成这项任务?
1
0回复
59

为什么这个程序集会导致分段错误?[复制]

这个问题在这里已经有了答案: 如何使用 printf 为 64 位 Mac OS X 编写汇编语言 hello world 程序? (1 个回答)
0
1回复
52

(f)c中的lex和C++中的bison/yacc

我正在尝试使用 flex/bison 构建像 ruby​​ 这样的迷你编程语言。 如果全部用 C 编写,Flex 和 bison 可以很好地协同工作。当我需要 C++ 为我的非终结符(expr、语句等)构建类时,问题就开始了。 mRuby.l: 我的野牛文件: 我尝试了多种方式来混合我的包含和编译
1
3回复
111

C++17中具有引用成员的结构体的深拷贝

我对 C++ 还是很陌生,对引用和移动语义感到困惑。 对于我正在编写的生成 C++17 代码的编译器,我需要能够拥有包含其他结构字段的结构。 由于结构定义将根据用户的另一种语言代码生成,因此它们可能非常大,因此我将内部结构存储为参考。 这对于处理开头声明但稍后定义的不完整类型也是必要的,这可能会发生
-1
0回复
17

在实现词法分析器时我应该如何分隔标记?[关闭]

关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来

1 2 3 4 5 6 7 8 9 10 下一页