在 Hacker News 首頁上看到「Hand-optimizing the TCC code generator (briancallahan.net)」這則,原始文章在「Hand-optimizing the TCC code generator」這邊。
主要是在文章內看到 objdump 這個東西,作者用這兩個指令看組語:
tcc -c true.c objdump -d true.o
另外同樣道理也可以用 gcc -c true.c
看 GCC 轉出來的版本。
倒出來的組語是 AT&T 語法,但我熟悉的是 Intel 語法,對我的直覺上需要習慣... 另外我看了一下 GCC 編出來的組語:
0000000000000000 <main>: 0: f3 0f 1e fa endbr64 4: 55 push %rbp 5: 48 89 e5 mov %rsp,%rbp 8: b8 00 00 00 00 mov $0x0,%eax d: 5d pop %rbp e: c3 retq
第一行的那個 endbr64 指令沒看過,查一下發現原來是 Intel 在 CPU 層設計出來的安全機制,標示這個地方可以被 indirect call 進來:「What does the endbr64 instruction actually do?」。
至於文章裡面主要提到的 mov $0x0, %eax
可以用 xor %eax, %eax
代替 (或是 sub %eax, %eax
) 算是很久前就會的東西了...