From 3c9c19314f93ea04a52ff49b8dc06a11f49e5569 Mon Sep 17 00:00:00 2001 From: andrew_miranti <andrew.h.miranti@gmail.com> Date: Sun, 3 Feb 2019 00:39:53 -0600 Subject: [PATCH] Opcode decoding seems to work! --- decoder.k | 4 ++-- run-on-large-program.sh | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100755 run-on-large-program.sh diff --git a/decoder.k b/decoder.k index b05ac65..60fe9d7 100644 --- a/decoder.k +++ b/decoder.k @@ -93,11 +93,11 @@ module DECODER <decoderBuffer> _ => B </decoderBuffer> <instructionpointer> _ => A </instructionpointer> - rule <k> OutputDisassembly => DecodedInstruction(Q, S, INumOSZToOpcode(N, O) .Operands) ... </k> + rule <k> OutputDisassembly => DecodedInstruction(Q, S, INumOSZToOpcode(N, O -Int 1) .Operands) ... </k> <ilen> Q </ilen> <REP> R </REP> <INUM> N </INUM> - <OSZ> O </OSZ> + <EOSZ> O </EOSZ> <suffix> SF </suffix> <disassemblerOut> S </disassemblerOut> diff --git a/run-on-large-program.sh b/run-on-large-program.sh new file mode 100755 index 0000000..219d87e --- /dev/null +++ b/run-on-large-program.sh @@ -0,0 +1,29 @@ +#!/bin/bash +#set -x + +CUR_DIR="$(pwd)" +SEMANTICS_DIR="$(dirname "$CUR_DIR/$0")" + +WORK_DIR="$(mktemp -d)" +OUT_FILE="$(mktemp)" +TEMP_OUT="$(mktemp)" + +trap "{ cat \"$OUT_FILE\"; rm -rf \"$WORK_DIR\"; rm -f \"$OUT_FILE\"; rm -f \"$TEMP_OUT\"; cd \"$CUR_DIR\"; }" EXIT +# https://stackoverflow.com/questions/687014/removing-created-temp-files-in-unexpected-bash-exit + +cd $WORK_DIR +split -a 3 -d "$CUR_DIR/$1" + +cd $SEMANTICS_DIR + +for filename in $WORK_DIR/*; do # https://stackoverflow.com/questions/20796200/how-to-iterate-over-files-in-a-directory-with-bash + krun -o none "$filename" > $TEMP_OUT + LINES_NEEDED="$(wc -l <$filename)" + LINES_GOT="$(wc -l <$TEMP_OUT)" + cat "$TEMP_OUT" >> "$OUT_FILE" + if [ "$LINES_NEEDED" -ne "$LINES_GOT" ] + then + >&2 echo "Lines for $FILE did not match. Needed $LINES_NEEDED, but got $LINES_GOT" + fi +done + -- GitLab