EzMIPS, the MIPS assembler simulator

EzMIPS is the MIPS assembler simulator and editor with syntax highlight. It aims to simulate MIPS processors as close as possible to the real hardware so that it can be used for educational purposes.

- User friendly GUI, ultra fast source code file loading (with very low memory requirements), assembling, encoding, decoding and running MIPS applications
- instruction syntax is strictly tested against the suggested format (eg add $s0, $s1, $s2 is the correct format; add, $s1, $s2, $s3 is not accepted)
- Handles unlimited breakpoints
- Instructions supported: add, addi, addiu, addu, and, andi, beq, bgez, bgezal, bgtz, blez, bltz, bltzal, bne, break, div, divu, j, jal, jalr, jr, lb, lbu, lh, lhu, lui, lw,  lwl, lwr, mfhi, mflo, movn, movz, mthi, mtlo, mul, mult, multu, nor, or, ori, sb, sh, sll, sllv, slt, slti, sltiu, sltu, sra, srav, srl, srlv, sub, subu, sw, swl, swr, syscall, teq, teqi, tge, tgeu, tgei, tgeiu, tlt, tlti, tltiu, tltu, tne, tnei, xor, xori
- Instruction recognized, encoded, decoded, but does NOT execute: sync
- Pseudo-instructions supported: bge, bgt, ble, blt, la, li, move, nop
- Directives supported: .data, .text, .globl, .end, .ent, .align
- infinite or very long loops handled after 5000 ms of inactivity (MIPS program not responding)
- detailed message on MIPS program finish: dropped off bottom, read memory exception, write memory exception, trap, invalid program counter, invalid integer input, syscall 10, invalid char input, syscall 17, break, arithmetic overflow, read memory address, write memory address not algned, program stopped responding
- the immediate value for all real instructions can be 16-bit long only according to the specification
- addi, addiu, slti, sltiu sign extend the immediate value
- andi, ori, xori zero extend the immediate value
- sll, srl, sra instructions accepted shift amount 0 - 31 (0x00 - 0x1F)
- overflow detection for add, addi, sub instructions (Runtime exception at 0x%08x: arithmetic overflow)
- proper results returned by mult (signed), multu (unsigned), mul (signed), div (signed), divu (unsigned)
- Runtime Exception handling when reading from/writing to invalid memory address
- the $zero register cannot be written
- syscall's:
  1. print integer in decimal
  2. print float
  3. print double (not supported yet)
  4. print string
  5. read integer
  6. read float (not supported yet)
  7. read double (not supported yet)
  8. read string into buffer
  9. sbrk (allocate heap memory)
 10. exit program
 11. print char
 12. read char
 13. open file
 14. read from file
 15. write to file
 16. close file
 17. exit2 (terminate with value)
 34. print integer in Hex

Notes:

- the immediate value for the li pseudo-instruction is 32-bit long

EzMIPS editor, assembler and simulator

EzMIPS - Program stopped responding

Download EzMIPS


No comments:

Post a Comment