Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 使用GDB在x86机器上进行MIPS反汇编;可能的_C_Assembly_Gdb_X86_Mips - Fatal编程技术网

C 使用GDB在x86机器上进行MIPS反汇编;可能的

C 使用GDB在x86机器上进行MIPS反汇编;可能的,c,assembly,gdb,x86,mips,C,Assembly,Gdb,X86,Mips,我有一台x86开发机器,正在为mips开发内核模块。我想拆开一个例程,找出模块的问题 所以我的问题是 “我可以在x86机器上拆解它吗,否则我将不得不使用MIPS开发机器?” 我试过了,但它是在x86指令集中反汇编的。您基本上需要某种形式的。交叉编译器允许您在主机(您的示例中为x86)上为目标计算机(您的示例中为MIPS)进行编译。因此,您可以从x86机器生成MIPS二进制文件。此外,您还将获得与编译器关联的所有其他工具,例如objdump。这是你的旅行指南 假设您使用objdump反汇编二进制文

我有一台x86开发机器,正在为mips开发内核模块。我想拆开一个例程,找出模块的问题

所以我的问题是 “我可以在x86机器上拆解它吗,否则我将不得不使用MIPS开发机器?”


我试过了,但它是在x86指令集中反汇编的。

您基本上需要某种形式的。交叉编译器允许您在主机(您的示例中为x86)上为目标计算机(您的示例中为MIPS)进行编译。因此,您可以从x86机器生成MIPS二进制文件。此外,您还将获得与编译器关联的所有其他工具,例如
objdump
。这是你的旅行指南

假设您使用
objdump
反汇编二进制文件,则可能不需要构建交叉编译器
objdump
属于,可能只需要编译binutils以使用MIPS作为目标(我从未尝试创建binutils的跨平台构建,因此我不能100%确定)


编辑:我刚刚又读了一遍标题,意识到您使用的是
gdb
。在这种情况下,我相信您需要创建一个完整的交叉编译器,并创建一个跨平台版本的
gdb

如果您使用的是一个预构建的工具链,那么它可能已经包含了一个交叉编译的gdb版本。如果没有,您可以按照下面的答案构建自己的。mpx核心是一个mips克隆,浏览repo trunk/gcc/build\u gcc\u linux.zip有一个构建脚本。这些补丁只需删除mpx不支持的指令,您无需应用它们。它构建了一个gdb以及其他工具,您可以使用这些工具将其分解为自己的内容。顺便说一句,不需要gdb只反汇编binutils。但是在交叉编译的情况下,我必须在MIPS机器上执行实用程序。据我所知,交叉编译是“在arch 1上编译代码以在arch 2上运行”而不是“在arch 1上编译代码以在arch 1上运行并为arch 2工作”OBJDUMP解决方案有效。现在它清楚地显示了mips指令集和寄存器。非常感谢。你们太棒了。