C 如何从操作码/机器码中获取汇编指令或助记符?
我有一个用gcc编译的二进制文件的简单c程序。 我正在编写自己的dis汇编程序,我能够从ELF文件中读取ELF头文件和其他头文件 我正在读取ELF二进制文件中的“.text”部分。并尝试将代码转换为助记符/汇编指令 如何将原始操作码/机器码转换为助记符/汇编指令?? C源代码是:C 如何从操作码/机器码中获取汇编指令或助记符?,c,linux,assembly,opcode,C,Linux,Assembly,Opcode,我有一个用gcc编译的二进制文件的简单c程序。 我正在编写自己的dis汇编程序,我能够从ELF文件中读取ELF头文件和其他头文件 我正在读取ELF二进制文件中的“.text”部分。并尝试将代码转换为助记符/汇编指令 如何将原始操作码/机器码转换为助记符/汇编指令?? C源代码是: #include <stdio.h> int main() { int i = 10; int j = 22 + i; return 0; } 如果已经安装了GNUBinautils(很可
#include <stdio.h>
int main()
{
int i = 10;
int j = 22 + i;
return 0;
}
如果已经安装了GNUBinautils(很可能已经安装了),那么可以使用
objdump --disassemble elf-file
如果问题是“为什么我要得到这些ffffff数字”,那么您需要向我们展示生成这些数字的代码。很有可能您遇到了从有符号字符到int的符号扩展问题。您的反汇编程序可能需要包含所有操作码及其对应的指令的列表,并且还必须解析所有前缀以及ModR/M和SIB字节。您可以在中找到所有这些信息。您需要修复代码,使其在打印之前不会将8位值扩展到32位。请使用
无符号字符
读取操作码值,并使用%02x
打印。我投票结束此操作,因为问题是如何编写反汇编程序而不显示任何努力。()您可以使用免费提供的英特尔指令参考。当然
objdump --disassemble elf-file