GDB输出arm助记符

问题描述 投票:0回答:1

当我尝试调试 C 文件时,GDB 使用 Arm 助记符对其进行调试。我可以将其更改为 x86,还是我只能使用arm助记符?我有一台arm64 M1 MacBook。

(gdb) disas main
Dump of assembler code for function main:
   0x0000000100003f44 <+0>: sub sp, sp, #0x30
   0x0000000100003f48 <+4>: stp x29, x30, [sp, #32]
   0x0000000100003f4c <+8>: add x29, sp, #0x20
   0x0000000100003f50 <+12>:    mov w8, #0x0                    // #0
   0x0000000100003f54 <+16>:    str w8, [sp, #12]
   0x0000000100003f58 <+20>:    stur    wzr, [x29, #-4]
   0x0000000100003f5c <+24>:    mov w8, #0xf                    // #15
   0x0000000100003f60 <+28>:    stur    w8, [x29, #-8]
   0x0000000100003f64 <+32>:    mov w8, #0xc                    // #12
   0x0000000100003f68 <+36>:    stur    w8, [x29, #-12]
   0x0000000100003f6c <+40>:    ldur    w8, [x29, #-8]
   0x0000000100003f70 <+44>:    ldur    w9, [x29, #-12]
   0x0000000100003f74 <+48>:    add w8, w8, w9
   0x0000000100003f78 <+52>:    str w8, [sp, #16]
   0x0000000100003f7c <+56>:    ldr w9, [sp, #16]
   0x0000000100003f80 <+60>:    mov x8, x9
   0x0000000100003f84 <+64>:    mov x9, sp
   0x0000000100003f88 <+68>:    str x8, [x9]
   0x0000000100003f8c <+72>:    adrp    x0, 0x100003000
   0x0000000100003f90 <+76>:    add x0, x0, #0xfb4
   0x0000000100003f94 <+80>:    bl  0x100003fa8
   0x0000000100003f98 <+84>:    ldr w0, [sp, #12]
   0x0000000100003f9c <+88>:    ldp x29, x30, [sp, #32]
   0x0000000100003fa0 <+92>:    add sp, sp, #0x30
   0x0000000100003fa4 <+96>:    ret
End of assembler dump.
c assembly gdb arm64 mnemonics
1个回答
1
投票

是的,您受困于计算机的本机指令集。

低级指令集本质上是机器相关的;您的 AArch64 CPU 完全无法理解非 ARM 指令,例如 AMD64 指令。虽然可以将您正在调试的 AArch64 代码转换为 AMD64,但这样做会使“反汇编”不再与您的调试相关,因为它不是您的处理器实际执行的代码。

© www.soinside.com 2019 - 2024. All rights reserved.