Introduction
I created a custom Hugo shortcode to elegantly display assembly code in blog posts and documentation. The hugo-asm-shortcode provides flexible formatting options for assembly code blocks, supporting multiple architectures and display modes.
Installation
Check out the repository for installation instructions and detailed documentation.
x86 basic example
{{< asm mode="raw" arch="x86" >}}
mov rax, 1
xor rdi, rdi
syscall
{{< /asm >}}
mov rax, 1
xor rdi, rdi
syscallARM64 basic example
{{< asm mode="raw" arch="arm" >}}
mov w0, #1
mov w1, #1
add w2, w0, w1
ret
{{< /asm >}}
mov w0, #1
mov w1, #1
add w2, w0, w1
retx86 + hex example
{{< asm mode="hex" arch="x86" >}}
48 c7 c0 01 00 00 00 | mov rax, 1
48 31 ff | xor rdi, rdi
0f 05 | syscall
{{< /asm >}}
48 c7 c0 01 00 00 00mov rax, 148 31 ffxor rdi, rdi0f 05syscallHex with capitalization
{{< asm mode="hex" capitalize="true" >}}
48 c7 c0 01 00 00 00 | mov rax, 1
{{< /asm >}}
48 C7 C0 01 00 00 00mov rax, 1Full example
{{< asm mode="full" arch="arm" >}}
00000000 | 20 00 80 52 | mov w0, #1
00000004 | 21 00 80 52 | mov w1, #1
00000008 | c0 03 5f d6 | ret
{{< /asm >}}
0000000020 00 80 52mov w0, #10000000421 00 80 52mov w1, #100000008c0 03 5f d6retFull with capitalization
{{< asm mode="full" arch="x86" capitalize="true" >}}
00401000 | 48 c7 c0 01 00 00 00 | mov rax, 1
00401007 | 48 31 ff | xor rdi, rdi
0040100a | 0f 05 | syscall
{{< /asm >}}
0040100048 C7 C0 01 00 00 00mov rax, 10040100748 31 FFxor rdi, rdi0040100A0F 05syscallARM64 with hex bytes
{{< asm mode="hex" arch="arm" >}}
20 00 80 52 | mov w0, #1
21 00 80 52 | mov w1, #1
42 00 01 0b | add w2, w2, w1
c0 03 5f d6 | ret
{{< /asm >}}
20 00 80 52mov w0, #121 00 80 52mov w1, #142 00 01 0badd w2, w2, w1c0 03 5f d6retLonger x86 function example
{{< asm mode="full" arch="x86" >}}
00401000 | 55 | push rbp
00401001 | 48 89 e5 | mov rbp, rsp
00401004 | 48 83 ec 10 | sub rsp, 0x10
00401008 | 89 7d fc | mov [rbp-0x4], edi
0040100b | 8b 45 fc | mov eax, [rbp-0x4]
0040100e | 83 c0 01 | add eax, 0x1
00401011 | c9 | leave
00401012 | c3 | ret
{{< /asm >}}
0040100055push rbp0040100148 89 e5mov rbp, rsp0040100448 83 ec 10sub rsp, 0x100040100889 7d fcmov [rbp-0x4], edi0040100b8b 45 fcmov eax, [rbp-0x4]0040100e83 c0 01add eax, 0x100401011c9leave00401012c3ret