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

时间:2010-05-03 18:22:49

标签: x86 assembly

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

3 个答案:

答案 0 :(得分:10)

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

维基百科上的x86 instruction set page有一个紧凑的列表,其中列出了按引入时分类的所有说明,这可能有助于您优先考虑首先实施的内容。

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

这只是一个直接的一对一映射;英特尔文档描述了所有说明及其编码。您需要构建一个巨大的查找表或等效的匹配和代码生成。