c++ - otool 生成什么汇编语言?(苹果系统)
问题描述
我正在使用 otool 从 gcc 编译的 C++ 文件中生成机器代码:
otool -tvV one.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
除了识别从文件中生成的汇编语言之外,该代码与问题无关。
在彻底查看了多次谷歌搜索尝试后,我找不到这实际上产生的汇编语言。所以,我没有办法轻松查看这些汇编命令实际上在做什么。
这是什么汇编语言和/或正在生成的汇编命令的参考在哪里?
解决方案
推荐阅读
- node.js - 使用 Cloud Firestore 获取集合中的所有文档
- android - 当应用程序应使用 TLS 时,在 SSLv3 握手期间引发 SSLProtocolException(Android 上的 OkHttp 3)
- firebase - 自定义用户模型到 Firebase 身份验证
- google-apps-script - 编辑特定单元格时将 CSV 文件从 Google Drive 导入 G Sheets 的 Google Script
- r - 如何从 R 中的字符串中删除这些元素
- python - 如何在类中组合相同的变量
- regex - 匹配多行文本(从 1 到 n 行)直到某个新行正则表达式
- python - 基于标签下载所有 NCBI PubMed ID
- html - 单击更新按钮后图像未编辑
- oracle - 什么是 PLS 整数?