Tool to generate BYTE sequences for Go assembly as generated by YASM.
Make sure YASM is installed on your platform. Get the code and compile with go install
.
$ more example.s
// VPADDQ XMM0,XMM1,XMM8
$ asm2plan9s example.s
$ echo example.s
LONG $0xd471c1c4; BYTE $0xc0 // VPADDQ XMM0,XMM1,XMM8
The instruction to be assembled needs to start with a //
preceded by either a single space
The preceding characters will be overwitten by the correct sequence (irrespective of its contents) so when changing the instruction, rerunning asm2plan9s
will update the BYTE sequence generated.
The starting position of the //
comment needs to follow the (imaginary) sequence with either a single space or a space followed by a back slash plus another space (see support for defines below).
Upon first entering an instruction you can type eg LONG $0x00000000; BYTE $0x00 // VZEROUPPER
to trigger the assembler.
If you are using #define for 'macros' with the back-slash delimiter to continue on the next line, this will be preserved.
For instance:
\ // VPADDQ XMM0,XMM1,XMM8
will be assembled into
LONG $0xd471c1c4; BYTE $0xc0 \ // VPADDQ XMM0,XMM1,XMM8
asm2plan9s works nicely together with asmfmt in order to format the assembly code (in a similar style to go fmt
).
For a more extensive example see compressAvx_amd64.s
Released under the Apache License v2.0. You can find the complete text in the file LICENSE.
Contributions are welcome, please send PRs for any enhancements.