汇编程序如何将x86指令助记符映射到二进制机器指令?

mud*_*dge 11 x86 assembly

我有兴趣编写一个x86汇编程序.我想知道将x86汇编助记符指令(使用类似英特尔的语法)映射到相应的二进制机器代码指令的好方法是什么.

And*_*lly 10

您想了解助记符到机器代码的物理映射吗?如果是这样,那么Intel IA32/IA64参考手册的第2A和2B卷描述了x86机器代码的二进制格式.

维基百科上的x86指令集页面包含按引入时分类的所有指令的紧凑列表,这可能有助于您优先考虑首先实现的内容.

但是,如果您询问如何解析汇编代码文本文件以使程序可以开始编写机器代码,那么您基本上需要了解如何编写编译器.工具lex和yacc是很好的起点,但如果你不知道如何构建编译器,你还需要得到一本书.我认为Dragon书是最好的,但是你可以使用其他书籍,SO有很多建议.

  • 所有英特尔操作码引用的问题是它们没有提供单个特定程序集语句如何映射到机器代码的例子.在ModR/N SIB字节混乱中很容易迷失... (3认同)

cHa*_*Hao 5

对于x86来说,这很复杂.由于32位处理器接管了一点点复杂,但是是的.仍然很痛苦.

你可能想看看nasm(http://www.nasm.us).它是一个开源的32位汇编程序.看看他们是如何做到的.或者,改为使用它.:)