You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MOVD is a 64-bit float load. MOVL is the 32-bit int load.
(The Go assembler syntax is different in this respect than one you might be used to, like at&t.)
That sounds reasonable. Still, one heck of a confusion. Perhaps this could be documented better. A lot of the SIMD stuff has Intel-like mnemonics as opposed to the Plan 9-like mnemonics one would expect, so it's kind of a tossup which one you need to use and what behaviour you get.
Yeah I agree it is kind of a mishmash. I think at some point we decided there were too many intel instructions to make a new plan9 syntax version of each one.
We could add more documentation to https://go.dev/doc/asm if that would help. CLs appreciated.
Go version
go version go1.20.12 freebsd/amd64
Output of
go env
in your module/workspace:What did you do?
I have tried to assemble an amd64 assembly file that contains an instruction like
This instruction is found in clausecker/pospop. As specified by Intel, it is supposed to perform a 32 bit load from
(SI)
intoX0
.What did you see happen?
I observe that the instruction was assembled to the instruction
which performs a 64 bit load from memory. When
(AX)
is right before an unmapped page, this causes a crash.What did you expect to see?
I expect the
MOVD
mnemonic to assembly into a 32 bit move instruction, not a 64 bit one.The text was updated successfully, but these errors were encountered: