aboutsummaryrefslogtreecommitdiff
path: root/scripts/dump_asm.sh
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-09 05:14:44 +0200
committerhachem <im@hachem.wtf>2026-09-09 05:14:44 +0200
commit8b76d35b0a045e0a3277be422513b938ef33dcce (patch)
treeb876d92ba3afb810e38f3f83792fc3fb849dd457 /scripts/dump_asm.sh
parentb9eff51ee157b22d8fa46aeecac7b95d5ed345d9 (diff)
feat: fasm backend
Diffstat (limited to 'scripts/dump_asm.sh')
-rwxr-xr-xscripts/dump_asm.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/scripts/dump_asm.sh b/scripts/dump_asm.sh
new file mode 100755
index 0000000..cb8a710
--- /dev/null
+++ b/scripts/dump_asm.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+root="$(cd "$(dirname "$0")/.." && pwd)"
+cd "$root"
+
+assemblers="${1:-${ASSEMBLER:-nasm fasm}}"
+
+docker compose up -d >/dev/null
+
+docker compose exec -T -e ASMS="$assemblers" hdass bash -c '
+ set -e
+ cd /hdass
+ [ -d build-linux ] || meson setup build-linux >/dev/null
+ meson compile -C build-linux >/dev/null
+
+cat > /tmp/sidebyside.awk <<"AWK"
+NR == FNR { left[FNR] = $0; if (length($0) > width) width = length($0); ln = FNR; next }
+{ right[FNR] = $0; if (FNR > rn) rn = FNR }
+END {
+ total = ln > rn ? ln : rn
+ for (i = 1; i <= total; i += 1)
+ printf "%-*s | %s\n", width, (i in left ? left[i] : ""), (i in right ? right[i] : "")
+}
+AWK
+
+ for asm in $ASMS; do
+ for src in examples/*.hdass; do
+ printf "\n===== %s (%s) =====\n" "$(basename "$src")" "$asm"
+ ./build-linux/hdass -t "$asm" "$src" -o /tmp/gen.asm
+ awk -f /tmp/sidebyside.awk <(expand -t 4 "$src") <(expand -t 4 /tmp/gen.asm)
+ done
+ done
+' </dev/null