0

只是好奇,如果打开一个十六进制编辑器并手动输入操作码并保存它。比如将 1 移到寄存器 1 将 2 移到寄存器 2 然后调用 add,这会给我工作程序吗?或者一些如何自动化这给了我蹩脚的编译器?

编辑:忘记了操作系统,我可以使用 Mac OS X 和 Linux,x86 作为 CPU。

4

3 回答 3

1

正如我在评论中指出的那样,操作系统/平台在这里很重要。大多数平台都期望可执行文件具有某种结构(如果只有标头等)。例如,参见旧版本 Unix 使用的 a.out 格式。

正如您所指出的,您使用的是 Mac OS X,请查看Mach-O 格式

请注意,键入'A0 A1'...等不同于将实际字节(在本例中为 160/161)放入文件中。

于 2009-12-03T20:10:10.277 回答
0

只要您有正确的二进制文件格式,就可以。

旧的 DOS .com 文件就是这样 - 原始程序序列化到磁盘。.exe 文件和 unix ELF 文件具有结构化格式,其中包括(除其他外)重定位信息。

于 2009-12-03T20:08:41.277 回答
0

仅当文件是格式正确的可执行二进制文件时。例如,参见 COFF 和 ELF 格式的参考资料。

od如果您对特定可执行文件的外观感到好奇,您还可以转储小型可执行文件的内容。

于 2009-12-03T20:31:37.697 回答