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
syscall

ARM64 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
ret

x86 + 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 05syscall

Hex 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, 1

Full 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 d6ret

Full 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 05syscall

ARM64 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 d6ret

Longer 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