gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:08:11 24 4
gpt4 key购买 nike

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

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

最佳答案

好吧,你写的是编译器的最后一步......

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

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

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

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

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

语言运行时引擎:

  • 它类似于您程序的操作系统
  • 你的语言支持的一组子程序
  • 类似于终端/真实操作系统和您的程序之间的接口(interface)
  • 内存/资源管理
  • 处理局部/全局/静态变量
  • 堆/栈 ...
  • 线程
  • 调试
  • 还有更多...

关于从头开始创建 a.out 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20828906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com