3_test: prep for praes tomorrow
authorBernhard Urban <lewurm@gmail.com>
Wed, 3 Nov 2010 22:24:00 +0000 (23:24 +0100)
committerBernhard Urban <lewurm@gmail.com>
Wed, 3 Nov 2010 22:24:00 +0000 (23:24 +0100)
WIP

3_test/.gitignore [new file with mode: 0644]
3_test/exectest.sh [new file with mode: 0755]
3_test/sum.s [new file with mode: 0644]
3a_asm/Makefile
3c_disasm/instr/.gitignore [new file with mode: 0644]

diff --git a/3_test/.gitignore b/3_test/.gitignore
new file mode 100644 (file)
index 0000000..79a3666
--- /dev/null
@@ -0,0 +1 @@
+*.dthex
diff --git a/3_test/exectest.sh b/3_test/exectest.sh
new file mode 100755 (executable)
index 0000000..8bb844b
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/bash -x
+
+ARG2=$2
+
+cleantools() {
+       make -C ../3a_asm clean
+       make -C ../3b_sim clean
+       make -C ../3c_disasm clean
+       rm -f *.s.dthex
+}
+
+buildtools() {
+       make -C ../3a_asm all
+       make -C ../3b_sim all
+}
+
+runasm() {
+       if [ "$ARG2" == ""  ]; then
+               echo "runasm: please provide a assembler file"
+               exit 1
+       fi
+       ../3a_asm/dtas < $ARG2 > ${ARG2%.s}.dthex
+}
+
+runsim() {
+       if [ "$ARG2" == ""  ]; then
+               echo "runsim: please provide a dthex file"
+               exit 1
+       fi
+       cd ../3b_sim; ./sim -f ../3_test/$ARG2
+}
+
+case $1 in
+       clean) cleantools;;
+       build) buildtools;;
+       asm) runasm;;
+       sim) runsim;;
+       *) echo "first argument must be clean|build|asm <file>|sim <file>"
+esac
+
diff --git a/3_test/sum.s b/3_test/sum.s
new file mode 100644 (file)
index 0000000..b005a05
--- /dev/null
@@ -0,0 +1,46 @@
+.text
+main:
+       ldis r2, 0x100
+
+       ldis r0, 1      
+       stw r0, 0(r2) ;1
+
+       addi r0,r0,2
+       stw r0, 4(r2) ;3
+
+       addi r0,r0,100
+       stw r0, 8(r2) ;103
+
+       addi r0,r0,-53
+       stw r0, 12(r2) ;50
+
+       addi r0,r0,-10
+       stw r0, 16(r2) ;40
+
+       ;ldis r1, 5
+       ldis r1, 0
+       call sum 
+       ;r0 sollte 1+3+103+50+40=197 sein
+       br dummynop
+
+sum:
+       ;r1 = len
+       ;r2 = arr
+       ;r3 = i
+       ;r0 = sum
+       ;r4 arr data
+       ldis r0, 0
+       addi r3, r1, 0
+       retzs- ; check len != 0
+loop:
+       ;load arr data
+       ldw r4, 0(r2)
+       ;sum += arr[i];
+       add r0, r0, r4
+       addi r2, r2, 4
+       subi r3, r3, 1
+       brnz+ loop
+       ret
+
+dummynop:
+       addi r0,r0,0
index 4b3da7ef10095bd5532c2bacf9bce841c05663bf..89ef6467590f506a252eef0ce14ca5d483f78923 100644 (file)
@@ -7,7 +7,7 @@ all:
 clean:
        -rm -Rf **/**.o **/**.hi dtas
 
-TESTFILES := $(shell ls tst/*.s) $(shell ls ../2_isa/src/*.s)
+TESTFILES := $(shell ls ../3_test/*.s) $(shell ls ../2_isa/src/*.s)
 test: all $(TESTFILES:.s=.out)
 
 %.out: %.s
diff --git a/3c_disasm/instr/.gitignore b/3c_disasm/instr/.gitignore
new file mode 100644 (file)
index 0000000..b3cb838
--- /dev/null
@@ -0,0 +1 @@
+*.d.*