otool生产什么汇编语言?(马科斯) 我使用OTo机从GCC编译的C++文件中生成机器代码:< /P>

otool生产什么汇编语言?(马科斯) 我使用OTo机从GCC编译的C++文件中生成机器代码:< /P>,c++,macos,assembly,otool,C++,Macos,Assembly,Otool,otool-tvvone.o 工作正常,并将程序集作为输出生成: (__TEXT,__text) section __Z14addByReferenceiRi: 0000000000000000 pushq %rbp 0000000000000001 movq %rsp, %rbp 0000000000000004 movl %edi, -0x4(%rbp) 0000000000000007 movq %rsi, -0x10(%rbp) 000000

otool-tvvone.o

工作正常,并将程序集作为输出生成:

(__TEXT,__text) section
__Z14addByReferenceiRi:
0000000000000000    pushq   %rbp
0000000000000001    movq    %rsp, %rbp
0000000000000004    movl    %edi, -0x4(%rbp)
0000000000000007    movq    %rsi, -0x10(%rbp)
000000000000000b    movl    -0x4(%rbp), %edi
000000000000000e    movq    -0x10(%rbp), %rsi
0000000000000012    addl    __Z14addByReferenceiRi(%rsi), %edi ## addByReference(int, int&)
0000000000000014    movl    %edi, __Z14addByReferenceiRi(%rsi) ## addByReference(int, int&)
0000000000000016    popq    %rbp
0000000000000017    retq
0000000000000018    nopl    __Z14addByReferenceiRi(%rax,%rax) ## addByReference(int, int&)
_main:
0000000000000020    pushq   %rbp
0000000000000021    movq    %rsp, %rbp
0000000000000024    subq    $0x10, %rsp
0000000000000028    movl    $0x5, %edi
000000000000002d    leaq    -0x8(%rbp), %rsi
0000000000000031    movl    $__Z14addByReferenceiRi, -0x4(%rbp) ## addByReference(int, int&)
0000000000000038    movl    $__Z14addByReferenceiRi, -0x8(%rbp) ## addByReference(int, int&)
000000000000003f    callq   __Z14addByReferenceiRi
0000000000000044    leaq    0x17(%rip), %rdi ## literal pool for: "Answer: %d\n"
000000000000004b    movl    -0x8(%rbp), %esi
000000000000004e    movb    $0x0, %al
0000000000000050    callq   _printf
0000000000000055    xorl    %esi, %esi
代码与问题无关,只是用于识别从文件生成的汇编语言

在仔细查看了多次谷歌搜索尝试后,我找不到这实际上产生了什么汇编语言。因此,我无法轻松查找这些汇编命令的实际用途


这是什么汇编语言和/或生成的汇编命令的引用在哪里?

看起来像GNU汇编程序语法:特别是x86-64(也称为amd64和一些其他名称),它是GNU汇编程序的AT&T语法。不幸的是,
otool
没有显示英特尔语法,尽管您可以始终使用
gobjdump
。需要注意的是,它并没有真正生成任何“汇编语言”。我的意思是,从某种意义上说,您将无法获取
otool
的输出并将其成功地反馈到汇编程序中。它是用于诊断目的的拆解转储。