好奇,如果打开一个十六进制编辑器并手动输入操作码并保存它。如移动1到寄存器1移动2到寄存器2然后调用add,那会给我工作程序吗?或者是否有一些如何自动化这给我糟糕的编译器?
编辑:忘了操作系统,我可以使用Mac OS X和Linux,x86是CPU。答案 0 :(得分:1)
正如我在评论中所指出的,OS /平台在这里很重要。大多数平台都期望某种结构可执行(如果只有标题等)。例如请参阅旧版Unix使用的the a.out format。
如您所示,您已经拥有Mac OS X,请查看Mach-O format。
请注意,键入'A0 A1'...
等不同于将实际字节(在本例中为160/161)放入文件中。
答案 1 :(得分:0)
只要您拥有二进制文件的正确文件格式,就可以了。
旧的DOS .com文件只是这个 - 原始程序序列化到磁盘。 .exe文件和unix ELF文件具有结构化格式,包括(除其他外)重定位信息。
答案 2 :(得分:0)
仅当文件是格式正确的可执行二进制文件时。例如,参见COFF和ELF格式的参考文献。
如果您对特定可执行文件的外观感到好奇,也可以使用od
转储小型可执行文件的内容。