add addembly x86

This commit is contained in:
songtianlun 2024-09-04 16:20:54 +08:00
parent 4a1628a4f9
commit 85fec93ba2
6 changed files with 93 additions and 0 deletions

28
study_assembly_x86/Makefile Executable file
View File

@ -0,0 +1,28 @@
CC = gcc
CFLAGS = -Wall -g
# 默认目标,生成所有文件
all: main.i main.s main.o main
# 预处理: 生成 main.i
main.i: main.c
$(CC) -E $< -o $@
# 编译: 生成汇编代码 main.s
main.s: main.i
$(CC) -S $< -o $@
# 汇编: 生成目标文件 main.o
main.o: main.s
$(CC) -c $< -o $@
# 链接: 生成可执行文件 main
main: main.o
$(CC) $< -o $@
# 清理所有生成的文件
clean:
rm -f main.i main.s main.o main
# .PHONY 表示这些目标不是文件名
.PHONY: all clean

BIN
study_assembly_x86/main Executable file

Binary file not shown.

8
study_assembly_x86/main.c Executable file
View File

@ -0,0 +1,8 @@
int add_a_and_b(int a, int b) {
return a + b;
}
int main() {
return add_a_and_b(2, 3);
}

13
study_assembly_x86/main.i Executable file
View File

@ -0,0 +1,13 @@
# 0 "main.c"
# 0 "<built-in>"
# 0 "<命令行>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<命令行>" 2
# 1 "main.c"
int add_a_and_b(int a, int b) {
return a + b;
}
int main() {
return add_a_and_b(2, 3);
}

BIN
study_assembly_x86/main.o Executable file

Binary file not shown.

44
study_assembly_x86/main.s Executable file
View File

@ -0,0 +1,44 @@
.file "main.c"
.text
.globl add_a_and_b
.type add_a_and_b, @function
add_a_and_b:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl %edi, -4(%rbp)
movl %esi, -8(%rbp)
movl -4(%rbp), %edx
movl -8(%rbp), %eax
imul %edx, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size add_a_and_b, .-add_a_and_b
.globl main
.type main, @function
main:
.LFB1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $3, %esi
movl $2, %edi
call add_a_and_b
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1:
.size main, .-main
.ident "GCC: (GNU) 14.1.1 20240720"
.section .note.GNU-stack,"",@progbits