EzMIPS downloads

EzMIPS v0.9.1.7 (May 20, 2020)

changelog:

- 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

- accurate state (pc, epc, highlighted line etc) on program finish

- Update main window and disable execute dialog before executing MIPS program for better user experience

EzMIPS 0.9.1.7


EzMIPS v0.9.1.6 (May 12, 2020)

changelog:

- Mips coprocessor 0 registers number displayed
- Error! no valid MIPS instructions found in .text segment
- syscall 13 (open file), does NOT raise an error for invalid flag (ie <> 0, 1, 9), handle this silently!
- on program end, stop bookmark sign displayed on last executed source code line
- on closing execute dialog, stop bookmark sign is hidden
- $pc after runtime exception & program finish are now correct
- Better handling of stop execution for syscall 10, syscall 17
- Better handling of runtime exceptions:
 + syscall 4 (print string), syscall 5 (read integer), syscall 8 (read string into buffer), syscall 12 (read char), syscall 13 (open file), syscall 14 (read from file), syscall 15 (write to file),
  + jr, jalr,break, add (overflow), sub (overflow), addi (overflow), lb, lh (halfword boundary & invalid address), lwl, lw (word boundary & invalid address), lbu, lhu (halfword boundary & invalid address), lwr, sb, sh (halfword boundary & invalid address), sw (word boundary & invalid address), swr instructions
 + tge, tgeu, tlt, tltu, teq, tne, tgei, tgeiu, tlti, teqi, tnei traps

EzMIPS 0.9.1.6


EzMIPS v0.9.1.5 (May 5, 2020)

changelog:

- More info on About Dialog

- Better Runtime Exception handling when writing to memory, $cause, $status, $epc updated properly, message is
  "Error | line %-5d | Runtime exception at 0x%08x: cannot write directly to this address <0x%08x>\n" for:
  
  + sycall 8 (read string into buffer) if $a0 ($a0 = address of input buffer) is not valid
  + sycall 14 (read from file) if $a1 ($a1 = address of input buffer) is not valid
  + sb $t, offset($s) if ($s + offset) is not valid
  + sh $t, offset($s) if ($s + offset) is not valid
  + sw $t, offset($s) if ($s + offset) is not valid
  + swl $t, offset($s) if ($s + offset) is not valid
  + swr $t, offset($s) if ($s + offset) is not valid

EzMIPS 0.9.1.5



EzMIPS v0.9.1.4 (April 18, 2020)

changelog:

- Open file, save already opened file - cancel, save already opened file user asked for filename; This is wrong - fixed!
- crashes with syscall 14 (read from file) and syscall 15 (write to file) if file descriptor ($a0) invalid, fixed.
- syscall 16 (close file): $v0 returns 0 on success, -1 on failure (compatible to SPIM)

EzMIPS 0.9.1.4



EzMIPS v0.9.1.3 (April 10, 2020)

changelog:

- Better Runtime Exception handling, prevent EzMIPS crash, $cause, $status, $epc updated properly, message is "Error | line %-5d | Runtime exception at 0x%08x: cannot read directly from this address <0x%08x>\n" for:
  sycall 4 (print string) if $a0 (address of null-terminated string to print) is not valid,
  sycall 13 (open file) if $a0 (address of null-terminated filename string) is not valid,
  sycall 15 (write to file) if $a1 (address of output buffer) is not valid,
  lb, lh, lwl, lw, lbu, lhu, lwr instructions if address given is not valid
- Better Runtime Exception handling, prevent EzMIPS crash, $cause, $status, $epc updated properly, message is "Error | line %-5d | Runtime exception at 0x%08x: cannot write directly to this address <0x%08x>\n" for:
  swl, swr instructions if address given is not valid
- Better sycall 5 (read integer) Runtime Exception handling: $cause, $status, $epc updated properly
- if sycall 13 (open file) fails (eg due to bad file name), it returns $v0 = -1
- sycall 15 (write to file) returns -1 if writing to file failed [eg invalid $a0 (file descriptor)]
- $gp memory minor bug fix
- Better 'lw' instruction not aligned on word boundary handling: $cause, $status, $epc updated properly

EzMIPS 0.9.1.3



EzMIPS v0.9.1.2 (April 7, 2020)

changelog:

- correct operation of mult instruction (signed): $lo and $hi values are calculated properly
- correct operation of multu instruction (unsigned): $lo and $hi values are calculated properly
- correct operation of mul instruction (signed): $lo and $hi values are calculated and updated
- correct operation of div instruction (signed): $lo and $hi values are calculated properly
- divu instruction (unsigned) thoroughly checked, found ok

EzMIPS 0.9.1.2



EzMIPS v0.9.1.1 (April 5, 2020)

changelog:

- overflow detection add  : Runtime exception at 0x%08x: arithmetic overflow
- overflow detection addi : Runtime exception at 0x%08x: arithmetic overflow
- overflow detection sub  : Runtime exception at 0x%08x: arithmetic overflow
- input box is NOT TopMost now
- syscall 5 (read integer) improvements
- wait until there is some text in input box
input box now displayed where input from the user is expected
- custom strncpyex function takes better care of non printable characters
- .space variable now displayed as a sequence of bytes and not as a string

EzMIPS 0.9.1.1




EzMIPS v0.9.1.0 (March 29, 2020)

changelog:

- Handling for variables of undefined type eg:
  .data
  var:      # this is handled
- new instructions recognized, encoded, decoded AND execute: teq, teqi, tge, tgeu, tgei, tgeiu, tlt, tlti, tltiu, tltu, tne, tnei
- break instruction recognises two formats now: break or break <number>
- break instruction now executes
- some modifications when parsing instructions of variable format: lw, sw, jalr, break
- jalr: if invalid porgram counter (not aligned on word boundary or outside limits): prevent EzMIPS crash and also,  "invalid program counter" error & update $epc register & $cause = 0x10, $status=0xff13
- jr update $epc register, $cause = 0x10, $status=0xff13 on error
- lw, sw crash when no arguments specified, fixed!
- lw crash if not valid address given, fixed!
- various minor bug fixes and improvements

EzMIPS 0.9.1.0




EzMIPS v0.9.0.9 (March 23, 2020)

changelog:

- if no section defined, .text section is the default
- .align n Align the next datum on a 2^n byte boundary. For example, .align 2 aligns the next value on a word boundary
.align 0 turns off automatic alignment of .half, .word, .float, and .double directives until the next .data or .kdata directive.
- .align directive allowed only in .data
- comment symbol (#) in string bug fixed
- label: declarations with no empty space after : now allowed
  eg label1:add $1, $2, $3 is now valid
- var: declarations with no empty space after : now allowed
 eg var1:.word 0x12345678 is now valid

EzMIPS 0.9.0.9




EzMIPS v0.9.0.8 (March 18, 2020)

changelog:

- new instructions supported:
  jalr in two formats: jalr $s ($d = $ra implied) OR jalr $d, $s
  lh, lhu (Runtime exception if address not aligned on halfword boundary)
  lwl, lwr
  movn, movz
  mthi, mtlo
  sh
  swl, swr
  sync

EzMIPS 0.9.0.8




EzMIPS v0.9.0.7 (March 14, 2020)

changelog:

- slt instruction compares the sign extended values of the $s and $t registers as it should
- miror display issues on execute & memory's listview fixed
- zero flickering when resizing the aplication's main window
- syscall <12> (read char) now prints the char entered
- .ascii & .asciiz variables display escape sequences for better user experience

EzMIPS 0.9.0.7




EzMIPS v0.9.0.6 (March 9, 2020)

changelog:


.byte, .half, .word variable values and the immediate value of the li pseudo-instruction can also be given in this format: 'd', 'a', etc Also, '\n', '\r', '\t'
- .space variables can be given only POSITIVE values
- syscall 5 (read integer): Exception | line xxxxx | invalid integer input (syscall 5) -> program terminates

EzMIPS 0.9.0.6




EzMIPS v0.9.0.5 (March 6, 2020)

changelog:

- Handle breakpoints
- EZMIPS uses even less RAM memory when assembling MIPS code
- First steps to support float registers and instructions
- syscall <12>: read char now supported
- syscall <17>: exit2 (terminate with value -> $a0: termination result) now supported

EzMIPS 0.9.0.5




EzMIPS v0.9.0.4 (March 4, 2020)

changelog:

- do not allow writing to $zero register
- prevent division by 0 for div & divu instructions
- execute lw istruction can cause "Runtime exception at 0x%08x: fetch address not aligned on word boundary 0x%08x\n"  => Terminate assemby program execution
- execute sw istruction can cause "Runtime exception at 0x%08x: store address not aligned on word boundary 0x%08x\n"  => Terminate assemby program execution
- andi instruction does NOT sign extend now
- xori instruction does NOT sign extend now
- attempt to write to an invalid memory address, could crash EzMIPS, fixed
- sll, srl, sra instructions do NOT accept negative decimals
- sllv $d, $t, $s: The number of bits to shift is given by the low order 5 bits of Rs (ie max 31)
- srav $d, $t, $s: The number of bits to shift is given by the low order 5 bits of Rs (ie max 31)
- srlv $d, $t, $s: The number of bits to shift is given by the low order 5 bits of Rs (ie max 31)




EzMIPS v0.9.0.3 (February 29, 2020)

changelog:

- .half variables can be only 16-bit numbers, .byte variables can be only 8-bit numbers. i.e strict checking when assembling
- when parsing sll, srl, sra only accept 5-bit values (0 -> 31) i.e strict checking when assembling
- strict checking when assembling .word variables
- new instruction supported: lbu
- lb instruction sign extends as it should!
- various bug fixes and improvements




EzMIPS v0.9.0.2 (February 26, 2020)

changelog:

- update the display of PC, HI, LO registers 
- smoother start up of main dialog
- smooth memory list view update
- Dynamic memory allocation (heap) supported
- syscall 11: print character now supported
- only accept 16-bit values for instructions expecting immediate & offset (apart for the li pseudo-instruction which accepts 32-bit values)




EzMIPS v0.9.0.1 (February 21, 2020)

changelog:

- memory of the MIPS simulator completely redesigned
- Run complete program only once for each Assemble command
- Close execute dialog when user selects some of the menu/toolbar commands (New, Open, etc)
- Bug: in assemble() -> encode: for the lw instruction, fixed
- The file name is always displayed on the status bar
- Several bug fixes and improvements




EzMIPS v0.9.0.0

This is the first public release of EzMIPS, the MIPS assembler simulator. It is written in plain C. HiEdit control is written in pure assembler (MASM) using WinAsm Studio.

The following instructions are recognized and supported:

add, addi, addiu, addu, and, andi, beq, bge (pseudo-instruction), bgez, bgezal, bgt (pseudo-instruction), bgtz, ble (pseudo-instruction), blez, blt (pseudo-instruction), bltz, bltzal, bne, break, div, divu, j, jal, jr, la (pseudo-instruction), lb, li (pseudo-instruction), lui, lw, mfhi, mflo, move (pseudo-instruction), mul, mult, multu, nop (pseudo-instruction), nor, or, ori, sb, sll, sllv, slt, slti, sltiu, sltu, sra, srav, srl, srlv, sub, subu, sw, syscall, xor, xori.


Please test thouroughly and let me know of any suggestions or bugs.

Regards,
Antonis Kyprianou

No comments:

Post a Comment