Files
Embedded-Hacking/0x0001a_stack/0x0001a_stack.c
T
2026-09-05 12:19:12 -04:00

24 lines
637 B
C

#include <stdio.h>
#include "pico/stdlib.h"
int main()
{
stdio_init_all();
while (true) {
__asm volatile(
// Save a low register and the link register.
"push {r4, lr}\n"
// Intentionally unordered: the encoded list is still r2, r3, r6.
"push {r3, r2, r6}\n"
// Thumb PUSH cannot encode high registers r8-r12.
"stmdb sp!, {r9, r10}\n"
// Restore each group in reverse order to return SP to its start.
"ldmia sp!, {r9, r10}\n"
"pop {r2, r3, r6}\n"
"pop {r4, lr}\n"
::: "memory");
}
}