3
(gdb) disas htons
Dump of assembler code for function ntohs:
0x00000037aa4e9470 <ntohs+0>: ror $0x8,%di
0x00000037aa4e9474 <ntohs+4>: movzwl %di,%eax
0x00000037aa4e9477 <ntohs+7>: retq
ror
和movzwl
在這裏做什麼?如何理解ntohs的實現?
一個非常奇怪的事情,我是'disas htons',爲什麼'ntohs'顯示呢? – compiler 2011-04-14 03:03:11
x86-64上的寄存器是64位,爲什麼不擴展到64位而不是32位? – compiler 2011-04-14 03:08:24
...我以爲這是一個錯字!但可能是因爲它們完全一樣,所以有人認爲通過將'ntohs'和'htons'指向相同的代碼,他們可以從'libc.so'中擠出一些額外的字節。至於爲什麼不擴展到64位,除了「ABI說你擴展到32位」之外,我不知道任何答案,但最初的原理可能是像'mov [sz] wq'這樣的一個答案。在原始的x86-64芯片上比'mov [sz] wl'更多的循環。 – zwol 2011-04-14 03:18:15