From 0be5617371239f8b012f1b8da7947a699cfab368 Mon Sep 17 00:00:00 2001 From: Ibrahim Date: Wed, 9 Dec 2020 20:17:58 +0000 Subject: [PATCH] 75% done - need to redo arithemtic operation to test edge cases & do certain instr by hand --- inputs/ibrahimreference.txt | 274 ++++++++++++++++++++++++++++++++++++ inputs/reference.txt | 66 ++++++--- inputs/sll.txt | 3 + inputs/sllv.txt | 4 + inputs/slti.txt | 3 + inputs/sltiu.txt | 3 + inputs/sltu.txt | 4 + inputs/sra.txt | 3 + inputs/srav.txt | 4 + inputs/srl.txt | 3 + inputs/srlv.txt | 4 + inputs/subu.txt | 4 + inputs/sw.txt | 4 + inputs/xor.txt | 4 + inputs/xori.txt | 3 + 15 files changed, 364 insertions(+), 22 deletions(-) create mode 100644 inputs/ibrahimreference.txt create mode 100644 inputs/sll.txt create mode 100644 inputs/sllv.txt create mode 100644 inputs/slti.txt create mode 100644 inputs/sltiu.txt create mode 100644 inputs/sltu.txt create mode 100644 inputs/sra.txt create mode 100644 inputs/srav.txt create mode 100644 inputs/srl.txt create mode 100644 inputs/srlv.txt create mode 100644 inputs/subu.txt create mode 100644 inputs/sw.txt create mode 100644 inputs/xor.txt create mode 100644 inputs/xori.txt diff --git a/inputs/ibrahimreference.txt b/inputs/ibrahimreference.txt new file mode 100644 index 0000000..64df695 --- /dev/null +++ b/inputs/ibrahimreference.txt @@ -0,0 +1,274 @@ +===== ADDIU ========== +int main(void) { + int a = -2147483648 + -32768 ; +} + +ORI $4,$0,-2147483648 +ADDIU $2,$4,-32768 +JR $0 + +//used to check for overflow 32768 is 2^15 which should +be sign extended. 21... is 2^31 + + +register_v0 = + +==========XORI Bitwise exclusive or immediate============= + +int main(void) { + int a = 5 ^ 2; +} + +ori $4,$0,5 +xori $2,$4,2 +jr $0 + +register 0 = 7 + +34040005 +38820002 +00000008 + +convert to little endian + +//////// + +====XOR Bitwise exclusive or========== + +int main(void) { + int a = 5 ^ 2; +} + +ori $4, $0, 5 +ori $5, $0, 2 +xor $2, $4, $5 +jr $0 + +register 0 = 7 + +34040005 +34050002 +00851026 +00000008 + +convert to little endian + +//////// + +========SW Store word============== + +int main(void) { + + +ori $4, $0, 5 +ori $5, $0, 1 +sw $4, 1($5) +jr $0 + +register 0 = 5 + +34040005 +34050001 +aca40001 +00000008 + + +=========== SUBU Subtract unsigned =========== + +int main(void) { + int a = 5-3; +} + +ori $4,$0,5 +ori $5,$0,3 +subu $2,$4,$5 +jr $0 + + +register_v0 = 2 + + +34040005 +34050003 +00851023 +00000008 + + +========= SRLV Shift right logical variable ====== + + +int main(void) { + int a = 2; + int b = 16>>a; +} + +ori $4,$0,2 +ori $5,$0,16 +srlv $2,$5,$4 +jr $0 + +register 0 = 3 + +34040002 +34050010 +////// +////// + +=============== SRL Shift right logical ============== + + +int main(void) { + int a = -2147483647>>2; #logical shift - should feed in 0s +} + +ori $4,$0,-2147483647 +srl $2,$4,$2 +jr $0 + +register 0 = 536870912 (2^29) + +34040001 +00041002 +00000008 + +========== SRAV Shift right arithmetic variable ======= + +int main(void) { + int a = 2; + int b = -2147483647>>2; #arithemtic shift not logical - feed in 1s (sign extension) +} + +ori $4, $0, 2 +ori $5,$0,-2147483647 +srav $2,$5,$4 +jr $0 + +register 0 = -536870912 (first 3 bits high - rest low) + +34040002 +34050001 +//////// +/////// + +====== SRA Shift right arithmetic ========== + +int main(void) { + int a = -2147483647>>2; #arithemtic shift not logical - feed in 1s (sign extension) +} + + +ori $4,$0,-2147483647 +sra $2,$4,$2 +jr $0 + +register 0 = -536870912 (first 3 bits high - rest low) + +34040001 +00041003 +00000008 + +======= SLTU Set on less than unsigned ===== + +int main() { + int a = 10; + int b = 9; + + max = a < b ? 1 : 0; + + return max; +} + + +ori $4, $0, 10 +ori $5, $0, 9 +sltu $2, $4, $5 +jr $0 + +register 0 = 0 + +3404000a +34050009 +0085102b +00000008 + +=========== SLTIU Set on less than immediate unsigned ================== + +int main() { + int a = 10; + + max = a < 9 ? 1 : 0; + + return max; +} + + +ori $4, $0, 10 +sltiu $2, $4, 9 +jr $0 + +register 0 = 0 + +3404000a +2c820009 +00000008 + +======= SLTI Set on less than immediate (signed) ======== + +int main() { + int a = 10; + + max = a < 9 ? 1 : 0; + + return max; +} + + +ori $4, $0, 10 +slti $2, $4, 9 +jr $0 + +register 0 = 0 + +3404000a +28820009 +00000008 + + + +======= SLLV Shift left logical variable ====== + + +int main(void) { + int a = 2; + int b = 3<