只是好奇,如果打开一个十六进制编辑器并手动键入操作码并保存它。如移动1到注册1移动2到注册2然后调用add,会给我工作程序吗?或者做一些如何自动化这让我蹩脚的编译器?将操作码打印到文件
编辑:忘记操作系统,我有Mac OS X和Linux在我的处置,x86作为CPU。
只是好奇,如果打开一个十六进制编辑器并手动键入操作码并保存它。如移动1到注册1移动2到注册2然后调用add,会给我工作程序吗?或者做一些如何自动化这让我蹩脚的编译器?将操作码打印到文件
编辑:忘记操作系统,我有Mac OS X和Linux在我的处置,x86作为CPU。
正如我在评论中指出的那样,操作系统/平台在这里很重要。大多数平台都期望某种结构可执行(如果只有一个头文件等)。例如参见旧版本的Unix所使用的the a.out format。
正如您已经指出您拥有Mac OS X,请查看Mach-O format。
小心打字'A0 A1'...
等不同于将实际字节(本例中为160/161)放在文件中。
我正在考虑编写一个脚本来完成写作或者使用十六进制编辑器来完成。但它需要结构化吗?还是会继续工作? – 2009-12-03 20:17:59
操作系统会期望某种格式 – 2009-12-03 20:33:03
只要你有正确的二进制文件格式,那么是的。
旧的DOS .com文件就是这样 - 原始程序序列化到磁盘。 .exe文件和unix ELF文件对它们具有结构化格式,其中包括(除其他外)重定位信息。
仅当该文件是格式正确的可执行二进制文件时。例如,请参阅关于COFF和ELF格式的参考。
如果您对某个特定的可执行文件的外观感兴趣,您也可以使用od
转储小型可执行文件的内容。
一个平台/操作系统在这里很有用 – 2009-12-03 20:08:20