mirror of
https://github.com/janishutz/eth-summaries.git
synced 2026-01-12 01:58:24 +00:00
[SPCA] Add example to ASM
This commit is contained in:
13
semester3/spca/code-examples/01_asm/01_sum.s
Normal file
13
semester3/spca/code-examples/01_asm/01_sum.s
Normal 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
|
||||||
@@ -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.
Reference in New Issue
Block a user