add addembly x86
This commit is contained in:
parent
4a1628a4f9
commit
85fec93ba2
28
study_assembly_x86/Makefile
Executable file
28
study_assembly_x86/Makefile
Executable 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
BIN
study_assembly_x86/main
Executable file
Binary file not shown.
8
study_assembly_x86/main.c
Executable file
8
study_assembly_x86/main.c
Executable 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
13
study_assembly_x86/main.i
Executable 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
BIN
study_assembly_x86/main.o
Executable file
Binary file not shown.
44
study_assembly_x86/main.s
Executable file
44
study_assembly_x86/main.s
Executable 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
|
Loading…
Reference in New Issue
Block a user