Comment by khrbtxyz
3 months ago
The exact same thing happens with GCC 12 with 32-bit MIPS.
#include <asm/unistd.h>
char msg[] = "hello, world!\n";
int main(void)
{
register int syscall_no asm("v0") = __NR_write;
register int arg1 asm("a0") = 1;
register char *arg2 asm("a1") = msg;
register int arg3 asm("a2") = sizeof(msg) - 1;
asm("syscall");
return 0;
}
root@OpenWrt:~# objdump --disassemble=main
...
00400580 <main>:
400580: 27bdfff8 addiu sp,sp,-8
400584: afbe0004 sw s8,4(sp)
400588: 03a0f025 move s8,sp
40058c: 24020fa4 li v0,4004
400590: 24040001 li a0,1
400594: 3c020041 lui v0,0x41
400598: 24450650 addiu a1,v0,1616
40059c: 2406000e li a2,14
4005a0: 0000000c syscall
No comments yet
Contribute on Hacker News ↗