您好,欢迎访问一九零五行业门户网

将 C/C++ 代码转换为汇编语言

在这里,我们将了解如何使用 gcc 从 c 或 c++ 源代码生成汇编语言输出。
gcc 提供了一个很棒的功能,可以在执行时从源代码获取所有中间输出。为了获得汇编器输出,我们可以使用 gcc 的选项“-s”。此选项显示编译后但发送到汇编器之前的输出。该命令的语法如下。
gcc –s program.cpp
现在,让我们看看输出会是什么样子。这里我们使用一个简单的程序。在这个程序中,两个数字被存储到变量 x 和 y 中,然后将和存储到另一个变量中,然后打印结果。
示例#include <iostream>using namespace std;main() { int x, y, sum; x = 50; y = 60; sum = x + y; cout << "sum is: " << sum << endl;}
输出.file "test_cpp.cpp".text.section .rodata.type _zstl19piecewise_construct, @object.size _zstl19piecewise_construct, 1_zstl19piecewise_construct:.zero 1.local _zstl8__ioinit.comm _zstl8__ioinit,1,1.lc0:.string "sum is: ".text.globl main.type main, @functionmain:.lfb1493:.cfi_startprocpushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6subq $16, %rspmovl $50, -12(%rbp)movl $60, -8(%rbp)movl -12(%rbp), %edxmovl -8(%rbp), %eaxaddl %edx, %eaxmovl %eax, -4(%rbp)leaq .lc0(%rip), %rsileaq _zst4cout(%rip), %rdicall _zstlsist11char_traitsiceerst13basic_ostreamict_es5_pkc@pltmovq %rax, %rdxmovl -4(%rbp), %eaxmovl %eax, %esimovq %rdx, %rdicall _znsolsei@pltmovq %rax, %rdxmovq_zst4endlicst11char_traitsiceerst13basic_ostreamit_t0_es6_@gotpcrel(%rip),%raxmovq %rax, %rsimovq %rdx, %rdicall _znsolsepfrsos_e@pltmovl $0, %eaxleave.cfi_def_cfa 7, 8ret.cfi_endproc.lfe1493:.size main, .-main.type _z41__static_initialization_and_destruction_0ii, @function_z41__static_initialization_and_destruction_0ii:.lfb1982:.cfi_startprocpushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6subq $16, %rspmovl %edi, -4(%rbp)movl %esi, -8(%rbp)cmpl $1, -4(%rbp)jne .l5cmpl $65535, -8(%rbp)jne .l5leaq _zstl8__ioinit(%rip), %rdicall _znst8ios_base4initc1ev@pltleaq __dso_handle(%rip), %rdxleaq _zstl8__ioinit(%rip), %rsimovq _znst8ios_base4initd1ev@gotpcrel(%rip), %raxmovq %rax, %rdicall __cxa_atexit@plt.l5:nopleave.cfi_def_cfa 7, 8ret.cfi_endproc.lfe1982:.size _z41__static_initialization_and_destruction_0ii,.-_z41__static_initialization_and_destruction_0ii.type _global__sub_i_main, @function_global__sub_i_main:.lfb1983:.cfi_startprocpushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6movl $65535, %esimovl $1, %edicall _z41__static_initialization_and_destruction_0iipopq %rbp.cfi_def_cfa 7, 8ret.cfi_endproc.lfe1983:.size _global__sub_i_main, .-_global__sub_i_main.section .init_array,"aw".align 8.quad _global__sub_i_main.hidden __dso_handle.ident "gcc: (ubuntu 7.3.0-16ubuntu3) 7.3.0".section .note.gnu-stack,"",@progbits
以上就是将 c/c++ 代码转换为汇编语言的详细内容。
其它类似信息

推荐信息