asm.sh (1353B)
1 #!/usr/bin/env bash 2 set -eu 3 4 ROOT="$(cd "$(dirname "$0")/../../.." && pwd)" 5 . "$ROOT/test/tier1/objlink/common.sh" 6 7 KITCHEN="$ROOT/test/tier1/kitchen/objlink/asm" 8 WORK="$(t1_work_dir "$ROOT" asm)" 9 LOG_DIR="$(t1_log_dir "$ROOT")" 10 KIT="${KIT:-$ROOT/build/kit}" 11 12 mkdir -p "$WORK" "$LOG_DIR" 13 t1_require_exe "$KIT" 'run: make bin' 14 15 echo "tier1 asm: aa64 encode" 16 KIT_TEST_ARCH=aa64 "$KIT" mc -target aarch64 -p - \ 17 < "$KITCHEN/aa64_cond.s" > "$LOG_DIR/asm-aa64-encode.log" 2>&1 18 tr -d '[:space:]' < "$LOG_DIR/asm-aa64-encode.log" > "$WORK/aa64_cond.hex" 19 printf '\n' >> "$WORK/aa64_cond.hex" 20 t1_diff "$KITCHEN/aa64_cond.expected.hex" "$WORK/aa64_cond.hex" \ 21 "$WORK/aa64_cond.diff" 22 23 echo "tier1 asm: x64 decode" 24 KIT_TEST_ARCH=x64 t1_run "$LOG_DIR/asm-x64-decode.log" \ 25 "$KIT" disas -target x86_64 -x "$(cat "$KITCHEN/x64_mov_ret.hex")" 26 t1_assert_grep "asm/x64-mov" '0:.*movl[[:space:]]+\$42, %eax' \ 27 "$LOG_DIR/asm-x64-decode.log" 28 t1_assert_grep "asm/x64-ret" '5:.*ret' "$LOG_DIR/asm-x64-decode.log" 29 30 echo "tier1 asm: rv64 decode" 31 KIT_TEST_ARCH=rv64 t1_run "$LOG_DIR/asm-rv64-decode.log" \ 32 "$KIT" disas -target riscv64 -x "$(cat "$KITCHEN/rv64_li_ret.hex")" 33 t1_assert_grep "asm/rv64-li" '0:.*li[[:space:]]+a0, 7' \ 34 "$LOG_DIR/asm-rv64-decode.log" 35 t1_assert_grep "asm/rv64-ret" '4:.*ret' "$LOG_DIR/asm-rv64-decode.log" 36 37 echo "tier1 asm: ok"