Comment by rep_lodsb
12 days ago
With an older version, it works (as long as there is no optimization at least, with -O2 all the register init code disappears):
$ gcc -v
... gcc version 10.2.1 20210110 (Debian 10.2.1-6)
0000000000001125 <main>:
1125: 55 push %rbp
1126: 48 89 e5 mov %rsp,%rbp
1129: b8 01 00 00 00 mov $0x1,%eax
112e: bf 01 00 00 00 mov $0x1,%edi
1133: 48 8d 35 ca 0e 00 00 lea 0xeca(%rip),%rsi # 2004 <_IO_stdin_used+0x4>
113a: ba 0e 00 00 00 mov $0xe,%edx
113f: 0f 05 syscall
No idea why a newer version produces worse code in this case (though of course, this way of doing inline assembly isn't "correct" anyway, so nasal demons may result)
No comments yet
Contribute on Hacker News ↗