有没有办法使用纯x86 intel操作码而不是汇编助记符和指令编写程序,然后用ML和LINK编译它。例如,如果我尝试写一个55而不是push ebp ML认为它是一个整数。它是否需要特殊的编译器或者如何编写操作码程序并进行编译。
答案 0 :(得分:2)
您可以使用db
:
db CDh,19h
调用中断0x19。
答案 1 :(得分:0)
汇编程序的工作是将mnemonix转换为二进制值。 x86是一个历史悠久的CISC指令集,因此这种翻译很难手动完成。
链接过程更糟糕,它创建了最终的可执行文件,这意味着创建了许多结构。这种做法和手动操作要困难得多。
如果你真的想用操作码写一些东西,可以使用十六进制编辑器(如果你知道所有的ASCII代码,甚至是一个记事本:))并写一个.COM程序。任何更复杂的(.exe)都会有点过分。
答案 2 :(得分:0)
简短的回答是,可以仅使用操作码编写程序。正如smilingthax演示的那样,你仍然需要一个汇编器或其他工具来输出每个操作码的二进制值。
您需要参考英特尔文档才能找到每个汇编记忆的操作码。此信息包含在Intel(R) Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual。
中