خب خروجی درست همون چیزی هست که دارید، که البته یک سری موارد اضافه داره که میتونید حذفش کنید. اگر میخواید خواناتر باشه:
gcc -c test.c
objdump -M intel -S test.o
و نتیجه هم این خواهد بود:
test.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <f>:
0: 55 push rbp
1: 48 89 e5 mov rbp,rsp
4: b8 7b 00 00 00 mov eax,0x7b
9: 5d pop rbp
a: c3 ret
مقدار return همیشه توی eax ذخیره میشه، در نتیجه قبلش باید با یک mov به eax انتقال داده بشه. همچنین چون یک تابع داریم، ابتدا مقدار قبلی اشارهگر پایه رو در پشته (استک) ذخیره میکنیم، بعد با rsp جایگزینش میکنیم و وقتی کارمون تموم شد، مقدار قبلی rbp رو از پشته برمیگردونیم.