利用“.byte”在嵌入式汇编中直接插入机器码

最近做的工作需要截获page_fault异常处理,需要模仿着原来的page fault异常处理例程写一个自己的异常处理例程。这个异常处理例程有一部分是汇编代码写的。反汇编原来的内核,发现这样一条指令

data32 xchg %ax, %ax

但是在汇编中,香港服务器,直接用

asm(“data32 xchg %ax, %ax);

的方式没有办法编译通过。编译器总是报告:`data32′ is not supported in 64 bit system. 而直接

asm();

编译之后的汇编代码则只是66 90。

尝试了不少办法,网站空间,最终去追踪内核代码,发现可以用这种方式来实现

asm();asm();

最终编译出来的代码,果然就是66 66 90。

用这种方法就可以实现直接在嵌入式汇编中硬编码机器码。在某些场合,比如底层机器新增加了指令,香港服务器租用,而编译器还没有做相应的扩展,使用这种方法可以达到使用新指令的目的。

要愈合不能,要忘却不能,要再次拥抱,却鼓不起足够的勇气,

利用“.byte”在嵌入式汇编中直接插入机器码

相关文章:

你感兴趣的文章:

标签云: