aboutsummaryrefslogtreecommitdiff
path: root/scripts/dump_asm.sh
blob: cb8a71071f5e436262dcd14c5405d45e846cede2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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