繁体   English   中英

从头开始创建a.out可执行文件

[英]Creating an a.out executable from scratch

我已经从头开始创建了一种编程语言。我已经构建了一个编译器,它处理输入文件中的代码并将其转换为标记,并检查标记的顺序是否正确。 我正处于编译器的最后一步:输出/可执行文件。 我想创建一个可以在终端中运行的输出。 我想创建一个a.out输出,但我能找到的唯一资源是来自nasm ,这对我没有帮助。

所以我的问题是,如何创建一个可以在终端中运行的a.out文件(unix可执行文件)?

那么你写的就是编译器的最后一步......

  • 你确定吗 ?
  • 它是什么类型的语言?
  • 例如像Pascal / C / C ++这样的非asm语言需要引擎

正如之前在评论中提到的那样,您可以:

  1. 使用应用程序中现有的汇编程序编译器/链接器

    • 这是最简单的方法
    • 您需要在asm中创建语言运行时引擎代码
    • 然后将您的源代码编译为asm
    • 把这两个来源放在一起
    • 并调用编译器/链接器
    • 但你可以忘记断点和追踪......
    • 如果你不喜欢asm,还有C / C ++编译器/链接器
  2. 创建自己的编译链接器

    • 首先,您需要学习可执行文件格式
    • 为它创建一个模板
    • 第二,你需要编写自己的asm编译器
    • 不需要完整的指令集
    • 只需要将所有必要的东西翻译成机器代码
    • 然后只需将您的语言编译为机器代码
    • 并使用代码和所有必要的数据填充模板
    • 保存为a.out ...

语言运行时引擎:

  • 它类似于你的程序的操作系统
  • 您的语言支持的子程序集
  • 喜欢终端/真实操作系统和你的程序之间的接口
  • 内存/资源管理
  • 处理本地/全局/静态变量
  • 堆/堆栈......
  • 线程
  • 调试
  • 以及更多 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM