有没有办法使用纯 x86 英特尔操作码而不是汇编助记符和指令编写程序,然后使用 ML 和 LINK 编译它。例如,如果我尝试写一个 55 而不是 push ebp ML 认为它是一个整数。它是否需要特殊的编译器,或者您将如何编写操作码程序并编译它。
问问题
1972 次
3 回答
2
您可以使用db
:
db CDh,19h
调用中断 0x19。
于 2010-10-22T23:02:58.647 回答
0
汇编程序的工作是将助记符转换为二进制值。x86 是一个历史悠久的 CISC 指令集,因此这种翻译很难手动完成。
链接过程更糟糕,它创建了最终的可执行文件,这意味着创建了许多结构。这要手动执行和维护要困难得多。
如果您真的想使用操作码编写一些东西,请使用十六进制编辑器(或者甚至是记事本,如果您知道所有 ASCII 代码 :))并编写一个 .COM 程序。任何更复杂的(.exe)都将是矫枉过正。
于 2010-10-22T23:17:16.623 回答
0
简短的回答是可以只使用操作码来编写程序。正如smilethax 所展示的,您仍然需要一个汇编程序或其他工具来输出每个操作码的二进制值。
您将需要参考英特尔文档以找出每个组装记忆的操作码。此信息包含在英特尔(R) 架构软件开发人员手册第 2 卷:指令集参考手册中。
于 2010-10-22T23:18:38.917 回答