summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rwxr-xr-xREADME.md54
1 files changed, 54 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100755
index 0000000..fc47712
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+# QDMA - Quick and Dirty MIPS Assembler
+
+## Intro
+
+QDMA is a simple MIPS assembler written in Go for
+[QDME](https://github.com/JacobMcDonnell/QDME), which is my simple MIPS
+emulator. Currently this assembler can only handle standard instructions,
+which means no sections and no predefined data outside of an I-Type
+instruction.
+
+## Instructions
+
+Here is a list of supported 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|
+