compiler-construction - 编译器 : Translation to assembly

标签 compiler-construction assembly

我已经为我的实验语言编写了一个解释器,并且知道我想继续为它编写一个小型编译器。它可能会获取源代码,执行与解释器(标记器、解析器)相同的步骤,然后将源代码转换为程序集。

现在我的问题:

  • 我可以期望我的语言中的每个命令都可以 1:1 翻译成一堆汇编指令吗?我的意思是,如果我必须完全抛弃整个输入程序,或者它是否只是每行转换为汇编。
  • 我应该使用哪种汇编程序作为输出格式?
  • 最佳答案

  • 我将您的问题解释为询问您的语言中的每个语句是否会在任何上下文中被翻译成相同的 ASM 行。答案是:这取决于您的语言,但通常不会。有一些复杂的问题,例如寄存器分配,可能会导致输出不是 1:1,具体取决于上下文。您的语句可能需要一些寄存器,这些寄存器在一个上下文中可能是空闲的,而在另一个上下文中可能被占用(因此您将使用堆栈)。
  • 取决于平台和您的计划。如果你想编译成 Windows 的本地程序集,x86 汇编语言应该是你的目标。
  • 关于compiler-construction - 编译器 : Translation to assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2612715/

    相关文章:

    windows - 尝试在 Windows 上编译时出错

    c++ - !编译器只留下一个 stub ! ,C++, 在.o文件中找到这些 "stubs"

    assembly - 如何将 XMM 128 位寄存器拆分为两个 64 位整数寄存器?

    assembly - 如何在汇编中查找数组中的最小有符号值

    c# - 是否可以在已停止的 IIS 6 站点上预编译 ASP.Net 网站?

    c - 默认情况下是否优化了 gcc 编译的程序?

    c++ - 英特尔 C++ 编译器是否优化了代码中从未调用过的函数?

    assembly - 首次使用 AVX 256 位向量会减慢 128 位向量和 AVX 标量操作

    assembly - DCPU-16 不接受键盘输入

    c - 为什么编译器要在栈上腾出空间