X86 选择合适的汇编语言编写编译器
我正在编写一个编译器,我已经完成了所有的步骤(标记化、解析、语法树结构等),它们在所有的编译器书籍中向您展示。(请不要使用“编写编译器的资源”问题的链接进行评论!) 我选择使用NASM和alink作为我的后端 现在我的问题是:我找不到任何学习NASM和汇编的好资源 x86程序集上的wikibook(德语)非常糟糕。他们甚至没有解释他们在那里写的代码,我现在甚至不能得到简单的东西,比如将1和2相加并输出结果X86 选择合适的汇编语言编写编译器,x86,nasm,assembly,X86,Nasm,Assembly,我正在编写一个编译器,我已经完成了所有的步骤(标记化、解析、语法树结构等),它们在所有的编译器书籍中向您展示。(请不要使用“编写编译器的资源”问题的链接进行评论!) 我选择使用NASM和alink作为我的后端 现在我的问题是:我找不到任何学习NASM和汇编的好资源 x86程序集上的wikibook(德语)非常糟糕。他们甚至没有解释他们在那里写的代码,我现在甚至不能得到简单的东西,比如将1和2相加并输出结果 在哪里可以学习NASM x86汇编 好吧,如果你愿意接受一本书作为参考。我在80年代学习
- 在哪里可以学习NASM x86汇编
- 了解大会:
- 80386 HTML参考:
- Linux/Win32 x86教程w/nasm:
- Linux汇编手册:
- 好吧,如果你愿意接受一本书作为参考。我在80年代学习帕斯卡时最喜欢的作家是杰夫·邓特曼。他最新的汇编书涵盖了NASM。
不确定您的目标是什么操作系统,但上面这本书的目标是Linux这一事实不应该成为问题,汇编结构是您感兴趣的
老实说,代码生成的实际汇编并不是最难的部分,我认为寄存器管理才是真正的学习所在
祝你好运 除非您已经签出,否则NASM手册是学习NASM的非常好的资源: NASM和GAS的比较也有助于: Freenode se(r)版本的irc通道#asm提供以下链接:
bits 32
section .data
greeting db "hello world", 10
section .text
global _start
_start:
mov eax, 4 ; sys_write
mov ebx, 1 ; stdout
mov ecx, greeting
mov edx, 12 ; greeting.length
int 0x80 ; system call interrupt
mov eax, 1 ; sys_exit
mov ebx, 0
int 0x80
将其组装为:
nasm -f elf -o example.o example.asm
ld -o example example.o -melf_i386
我自己用python编写了一个小型代码生成器。虽然我刚才把那东西放在中间了。最近我写了一些不同的工具,可能对任何处理汇编的人都有用。现在我也在寻求帮助。。除了我似乎必须在那里做一些自助:
在我启动新的基于表的代码生成器并使其运行之前,我的旧代码生成器已经存在。如果有人仍在寻找有关NASM的教程,请查看以下内容:
编译器没有理由必须输出汇编程序。让它输出一种您熟悉的语言,如C,然后使用C(或其他)编译器生成最终的可执行文件。您的问题更像是您自己所说的“在哪里可以学习NASM x86汇编?”。请选择一个更好的主题,因为它与编译器没有任何关系。你考虑LLVM了吗?在相同的LANGUGUG中,你的代码输出奖励积分。尼尔:我觉得翻译成C不太舒服。。我宁愿在不受其他编译器限制的情况下完全控制和优化我的语言。@X A编写C编译器的人比你可能知道的更多关于优化的知识-你可以利用他们的专业知识。在过去,使用高级语言作为编译器输出已经成功地进行了多次。