Hacker News
new
|
past
|
comments
|
ask
|
show
|
jobs
|
submit
login
besselheim
on June 11, 2017
|
parent
|
context
|
favorite
| on:
Intel fires warning shots at Microsoft, says x86 e...
MOV RAX, 1 is seven bytes: 48 C7 C0 01 00 00 00
pcwalton
on June 11, 2017
[–]
The parent has a good point actually, because "mov eax,1" automatically zero-extends in 64-bit mode.
It's still one byte longer than the equivalent AArch64 instruction, though.
kccqzy
on June 11, 2017
|
parent
[–]
Fine. If you are really into getting the shortest instruction, try "xorl %eax,%eax" then "incl %eax" which is four bytes (31 c0 ff c0).
gsg
on June 11, 2017
|
root
|
parent
[–]
push $1/pop %eax (6a 01 58) is shorter, but perhaps not the best idea.
nayuki
on June 11, 2017
|
root
|
parent
[–]
Actually, there is no 32-bit pop instruction in x86-64 mode. Your code won't work.
gsg
on June 11, 2017
|
root
|
parent
[–]
You're right: it should be pushq $1/pop %rax (which is also three bytes, although there will be a prefix byte for registers r8 through r15).
Guidelines
|
FAQ
|
Lists
|
API
|
Security
|
Legal
|
Apply to YC
|
Contact
Search: