2021-03-01 07:42:35 +00:00
|
|
|
#include "libc/macros.internal.h"
|
2020-06-16 02:01:28 +00:00
|
|
|
|
2021-02-08 17:19:00 +00:00
|
|
|
// Example assembly function.
|
|
|
|
//
|
|
|
|
// @note param agnostic
|
|
|
|
// @note we love stack frames
|
|
|
|
// easiest way to do backtraces
|
|
|
|
// somehow they usually make code faster
|
|
|
|
// it's convention for keeping stack 16-byte aligned
|
|
|
|
// cpus still devote much to pushing & popping b/c i386
|
2023-05-13 05:42:57 +00:00
|
|
|
MyAsm:
|
|
|
|
|
|
|
|
#ifdef __x86_64__
|
|
|
|
push %rbp
|
2020-06-18 23:14:47 +00:00
|
|
|
mov %rsp,%rbp
|
2020-06-16 02:01:28 +00:00
|
|
|
call MyPrint2
|
2020-06-18 23:14:47 +00:00
|
|
|
pop %rbp
|
2023-05-13 05:42:57 +00:00
|
|
|
#elif defined(__aarch64__)
|
|
|
|
bl MyPrint2
|
|
|
|
#else
|
|
|
|
#error "unsupported architecture"
|
|
|
|
#endif
|
|
|
|
|
2020-06-18 23:14:47 +00:00
|
|
|
ret
|
2020-06-16 02:01:28 +00:00
|
|
|
.endfn MyAsm,globl
|