From 1a93e04fe50d59f0c524e8f4dd53d48a287adfde Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Sun, 5 May 2024 02:13:51 -0400 Subject: Initial Commit --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..370e3e6 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# QDME - Quick and Dirty MIPS Emulator + +## Intro + +QDME is a simple MIPS emulator written in C. Currently the binary file must be +manually created, eventually this will change. + +## Instructions +|Instruction|Type|Action| +|-----------|----|------| +|add |R |rd = rs + rt| +|addu |R |rd = rs + rt| +|and |R |rd = rs & rt| +|or |R |rd = rs \| rt| +|slt |R |rd = rs < rt| +|sltu |R |rd = rs < rt| +|sub |R |rd = rs - rt| +|subu |R |rd = rs - rt| +|xor |R |rd = rs ^ rt| +|sll |R |rd = rt << shamt| +|sra |R |rd = rt >> shamt| +|srl |R |rd = rt >> shamt| +|div |R |hi = rs % rt lo = rs / rt| +|divu |R |hi = rs % rt lo = rs / rt| +|mult |R |hi, lo = rs * rt| +|multu |R |hi, lo = rs * rt| +|MFHI |R |rd = hi| +|MFLO |R |rd = lo| +|MTHI |R |rs = hi| +|MTLO |R |rs = lo| +|jr |R |pc = addr, pc = $ra| +|jalr |R |rd = pc, pc = addr| +|syscall |R |System Call| +|jal |J |$ra = pc, pc = addr| +|j |J |pc = addr| +|beq |I | pc = (rs == rt) ? imm + pc + 4 : pc| +|bne |I | pc = (rs != rt) ? imm + pc + 4 : pc| +|addi |I |rt = rs + imm| +|addiu |I |rt = rs + imm| +|andi |I |rt = rs & imm| +|ori |I |rt = rs \| imm| +|xori |I |rt = rs ^ imm| +|slti |R |rt = rs < imm| +|sltiu |R |rt = rs < imm| +|lui |I |rt = rs << 16| +|lw |I |rs = imm(rt)| +|sw |I |imm(rt) = rs| + +## Syscalls + +|Syscall|Action| +|-------|------| +|1 |Print integer in $a0| +|2 |Not Implemented Yet| +|3 |Not Implemented Yet| +|4 |Print Null Terminated String, address in $a0| +|5 |Read integer into $v0| +|6 |Not Implemented Yet| +|7 |Not Implemented Yet| +|8 |Read string of length $a0 into memory at $a1| +|9 |Not Implemented Yet| +|10 |Exit with Status code 0| +|11 |Print Character in $a0| +|12 |Read Character into $v0| +|13 |Not Implemented Yet| +|14 |Not Implemented Yet| +|15 |Not Implemented Yet| +|16 |Not Implemented Yet| +|17 |Exit with Status Code in $0| + -- cgit v1.2.3