Document x86 assembly examples

This commit is contained in:
dwrz
2026-10-27 12:41:06 +00:00
parent 724b6988db
commit 695a79e106
2 changed files with 18 additions and 4 deletions
+4
View File
@@ -3,10 +3,14 @@
_start:
# Store system call 1 in the EAX register.
# mov = instruction
# $1, %eax = operands
# %eax = register
mov $1, %eax
# Store the exit code 0 in the EBX register.
mov $0, %ebx
# Call interrupt handler 0x80 (128) -- on Linux, this is the kernel.
# Kernel will take over and see 1 in %eax, 0 in %ebx.
int $0x80
+14 -4
View File
@@ -14,18 +14,28 @@ _start:
# square expects an integer on the stack, 16 bytes down from RBP.
# The squared value is returned on %rax.
square:
# Function Epilogue --> {
# Function Prologue --> {
push %rbp
mov %rsp, %rbp
# Retrieve the parameter from the stack.
# 8 bytes down from RSP is the return address from square.
# 8 bytes down from that is the parameter to multiple.
# 8 bytes down from that is the parameter to multiply.
mov 16(%rbp), %rax
mul %rax
# Function Prologue --> }
# Function Epilogue --> }
mov %rbp, %rsp
pop %rbp
# ret pops and return to address on stack.
# ret pops and returns to address on stack.
ret
# |----------------+-----------+----------------|
# | Address | Data | Stack Pointers |
# |----------------+-----------+----------------|
# | 0x7fffffffe8f8 | | |
# | 0x7fffffffe900 | 0x0 (rbp) | |
# | 0x7fffffffe908 | 0x401002 | |
# | 0x7fffffffe910 | 3 | ←rsp |
# |----------------+-----------+----------------|
# ←rbp