1. 引言
为了深入理解c++,决定学习一些简单的汇编语言。使用ubuntu系统下g++很容易将一个c++的文件编译成汇编语言。本文使用此方法,对一个简单的c++文件编译成汇编语言进行理解。
2.示例
文件名:reorder_demo.cpp
#include<stdio.h>typedef unsigned char uint8;uint8 a = 0U;
uint8 b = 0U;int main(int argn, char* argv[])
{a = b + 1;b = 1;return 0;
}
转化成汇编语言的编译命令如下
g++ -S reorder_demo.cpp
转化后生成reorder_demo.s,汇编语言内容如下:
.file "reorder_demo.cpp".text.globl a.bss.type a, @object.size a, 1
a:.zero 1.globl b.type b, @object.size b, 1
b:.zero 1.text.globl main.type main, @function
main:
.LFB0:.cfi_startprocendbr64pushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6movl %edi, -4(%rbp)movq %rsi, -16(%rbp)movzbl b(%rip), %eaxaddl $1, %eaxmovb %al, a(%rip)movb $1, b(%rip)movl $0, %eaxpopq %rbp.cfi_def_cfa 7, 8ret.cfi_endproc
.LFE0:.size main, .-main.ident "GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0".section .note.GNU-stack,"",@progbits.section .note.gnu.property,"a".align 8.long 1f - 0f.long 4f - 1f.long 5
0:.string "GNU"
1:.align 8.long 0xc0000002.long 3f - 2f
2:.long 0x3
3:.align 8
4:
3.汇编分析
分析待下次