Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何从操作码/机器码中获取汇编指令或助记符?_C_Linux_Assembly_Opcode - Fatal编程技术网

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(很可

我有一个用gcc编译的二进制文件的简单c程序。 我正在编写自己的dis汇编程序,我能够从ELF文件中读取ELF头文件和其他头文件

我正在读取ELF二进制文件中的“.text”部分。并尝试将代码转换为助记符/汇编指令

如何将原始操作码/机器码转换为助记符/汇编指令?? C源代码是:

#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