我正在为编译器编写一个x86后端,并且发现它对我需要的每条汇编指令的机器代码进行编码都是非常繁琐的事情,而且显然是在重新发明轮子。该指令集是否在任何地方都有声明式表示形式,例如一个将指令操作和操作数映射到字节的XML文件?
最佳答案
我强烈建议为此使用DynASM。它不是声明性描述,但是它使您可以完全控制发出的指令,并且比声明性描述更易于使用。这是编写特定于平台的代码生成IMO的理想方法。
它也非常小巧,没有强制性:运行时完全包含在几百行.h
文件中。
有关使用DynASM编写非常简单的代码源的示例,请参见我的DynASM tutorial。
即使您不相信DynASM,也可以在DynASM代码库a pretty concise declarative description of x86 instructions中找到它,您可能会发现它很有用。