diff options
Diffstat (limited to 'scripts/dump_asm.sh')
| -rwxr-xr-x | scripts/dump_asm.sh | 34 |
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 |
