问题描述
我正在研究一个项目,据此我们提议对x86 / x86-64进行体系结构扩展。我们已经定义了汇编指令,到目前为止,我们已经使用asm(\“。byte 0x04 \”);之类的语句将其硬编码到C文件中。这里的问题是,这可能很乏味且容易出错。
我正在寻找现有的x86-64汇编程序,可以在其中轻松定义新指令。我查看过GAS,但发现使用它有点困难。它被设计为快速,不可扩展的。有人可以建议其他选择吗?
谢谢。
解决方法
任何宏汇编程序(例如FASM)都应该能够满足您的需求。
如果要“本地”支持指令,则可能需要获取某些汇编程序的源代码并修改其代码生成器。
, MASM和JWASM可以回补指令。编写一条与您要生成的指令具有相同结构和前缀的指令,然后回补以替换部分代码。
例如。
L1:bsf eax,ebx
L2:
组织L1 + 1
db 0BDH;替换指令的第二个字节
组织L2;返回说明的末尾
这会将具有相同操作数的bsf指令更改为bsr指令。但是,您必须知道所有前缀字节的大小才能将补丁放在正确的位置。
历史上,此方法已在宏中用于汇编程序尚不支持的新指令。