[SPCA] Add example to ASM

This commit is contained in:
RobinB27
2026-01-10 17:29:22 +01:00
parent 99ee7507a3
commit 59f4151a3e
3 changed files with 19 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
sum: // Label
endbr64 // Indirect Branch target (No effect on code's logic)
pushq %rbp // Preserve caller stack frame
movq %rsp, %rbp // Set up new stack frame
movl %edi, -20(%rbp) // Arg1 register -> stack
movl %esi, -24(%rbp) // Arg2 register -> stack
movl -20(%rbp), %edx // stack[Arg1] -> gp register
movl -24(%rbp), %eax // stack[Arg2] -> gp register
addl %edx, %eax // Add Arg1 + Arg2 -> gp register
movl %eax, -4(%rbp) // result -> stack
movl -4(%rbp), %eax // stack[result] -> return register
popq %rbp // Restore caller stack frame
ret // jump back to caller

View File

@@ -35,3 +35,9 @@ Today, the choices are made based on outside constraints usually. For desktops a
For embedded systems though, the reduced complexity of RISC makes more sense, but for how long still? For embedded systems though, the reduced complexity of RISC makes more sense, but for how long still?
What matters most today are non-technical factors such as existance of code for one ISA or licensing costs (and of course, Geopolitics) What matters most today are non-technical factors such as existance of code for one ISA or licensing costs (and of course, Geopolitics)
\shade{purple}{Example} A \verb|C| function that simply adds $2$ arguments might be compiled (unoptimized) to this:
\inputcodewithfilename{gas}{code-examples/01_asm/}{01_sum.s}

Binary file not shown.