All Projects → zhanghai → mipsasm

zhanghai / mipsasm

Licence: GPL-3.0 license
MIPS assembler and IDE

Programming Languages

java
68154 projects - #9 most used programming language
assembly
5116 projects

Projects that are alternatives of or similar to mipsasm

lips
MIPS R4300i assembler in Lua
Stars: ✭ 20 (-55.56%)
Mutual labels:  mips, mips-assembler
SWET
Selenium WebDriver Page Test / workflow recorder (successor to SWD recorder)
Stars: ✭ 34 (-24.44%)
Mutual labels:  ide, swt
nix-env-selector
Allows switch environment for Visual Studio Code using Nix Package Manager.
Stars: ✭ 154 (+242.22%)
Mutual labels:  ide
noflo-ui-server
DEPRECATED, see README
Stars: ✭ 62 (+37.78%)
Mutual labels:  ide
colon-ide
Colon is a flexible text editor, built on Electron, and based on everything we love about our favorite editors. We are trying to designe it to be fully customizable.
Stars: ✭ 91 (+102.22%)
Mutual labels:  ide
makestudio
Setup your Delphi Environment very easily - build your projects with more comfort
Stars: ✭ 43 (-4.44%)
Mutual labels:  ide
zee
A modern text editor for the terminal written in Rust
Stars: ✭ 1,120 (+2388.89%)
Mutual labels:  ide
tails
tails enables you to view, edit, and organize all your programming projects in one place
Stars: ✭ 20 (-55.56%)
Mutual labels:  ide
uvmm
Virtual machine monitor for L4Re
Stars: ✭ 22 (-51.11%)
Mutual labels:  mips
XScalaWT
Extensible page description language for SWT written as a Scala internal DSL. Incldes style sheets, data binding, more... Presentation here: http://www.coconut-palm-software.com/pix/scala_declarative_dsls2.svg (Unfortunately quality SVG playback has degraded over the years, Firefox still works but Chrome and IE longer display the presentation. I…
Stars: ✭ 17 (-62.22%)
Mutual labels:  swt
myPDDL
PDDL Syntax Highlighting, Snippets, Domain Visualization and more for Sublime Text
Stars: ✭ 32 (-28.89%)
Mutual labels:  ide
bfloader
🧠 Brainfuck IDE and interpreter in 512 bytes. (boot sector)
Stars: ✭ 41 (-8.89%)
Mutual labels:  ide
Devel-Camelcadedb
Perl module for debugging with Perl5 plugin for IntelliJ
Stars: ✭ 23 (-48.89%)
Mutual labels:  ide
CodeView
Android Library to make it easy to create an Code editor or IDE that support any languages and themes, with auto complete, auto indenting, snippets and more features
Stars: ✭ 254 (+464.44%)
Mutual labels:  ide
core
🚀 A framework helps you quickly build Cloud or Desktop IDE products.
Stars: ✭ 2,082 (+4526.67%)
Mutual labels:  ide
vim-terminal
A Vim plugin that opens an interactive terminal in a buffer for running programs
Stars: ✭ 45 (+0%)
Mutual labels:  ide
cross
“Zero setup” cross compilation and “cross testing” of Rust crates
Stars: ✭ 3,550 (+7788.89%)
Mutual labels:  mips
kpspemu
PSP Emulator written in Kotlin for JVM, JS and Native. Can work as PWA.
Stars: ✭ 57 (+26.67%)
Mutual labels:  mips
misbehave
Add IDE-like text entry to HTML contenteditable tags
Stars: ✭ 34 (-24.44%)
Mutual labels:  ide
Christmas
🎅🏻 Text Editor Christmas Theme 🎄
Stars: ✭ 15 (-66.67%)
Mutual labels:  ide

MIPS Assembler and IDE

本文中文版

This is my project for Computer Organization, Shi Qingsong, Zhejiang University.

The MIPS assembler is based on the MIPS 32 specification, with some custom extensions.

The MIPS IDE is built upon SWT, packaged with launch4j for Windows executable.

Screenshot

Windows

GTK3

Specification

This MIPS assembler mainly complies with the specifications from "MIPS Assembly Language Programmer’s Guide" and "MIPS32 Architecture For Programmers Volume II: The MIPS32 Instruction Set".

Instruction set

95 Instrucitons:

  • ADD
  • ADDI
  • ADDIU
  • ADDU
  • AND
  • ANDI
  • B
  • BEQ
  • BEQL
  • BGEZ
  • BGEZAL
  • BGEZALL
  • BGEZL
  • BGTZ
  • BGTZL
  • BLEZ
  • BLEZL
  • BLTZ
  • BLTZAL
  • BLTZALL
  • BLTZL
  • BNE
  • BNEL
  • BREAK
  • COP2
  • DERET
  • DIV
  • DIVU
  • ERET
  • J
  • JAL
  • JALR
  • JR
  • LA
  • LB
  • LBU
  • LDC1
  • LDC2
  • LH
  • LHU
  • LI
  • LL
  • LUI
  • LW
  • LWC1
  • LWC2
  • LWL
  • LWR
  • MFC0
  • MFHI
  • MFLO
  • MOVE
  • MOVN
  • MOVZ
  • MTC0
  • MTHI
  • MTLO
  • MULT
  • MULTU
  • NOR
  • NOP
  • OR
  • ORI
  • PREF
  • SB
  • SC
  • SDC1
  • SDC2
  • SH
  • SLL
  • SLLV
  • SLT
  • SLTI
  • SLTIU
  • SLTU
  • SRA
  • SRAV
  • SRL
  • SRLV
  • SUB
  • SUBU
  • SW
  • SWC1
  • SWC2
  • SWC3
  • SWL
  • SWR
  • TLBP
  • TLBR
  • TLBWI
  • TLBWR
  • SYSCALL
  • WAIT
  • XOR
  • XOR

10 directives:

  • .TEXT
  • .DATA
  • .ASCII
  • .ASCIIZ
  • .BYTE
  • .HALF
  • .WORD
  • .SPACE
  • .EVAL
  • .ECHO

JavaScript expression is supported for operands, while .eval can evaluate a JavaScript expression anywhere and .echo can echo the JavaScript returned string as the source code to assemble in place.

Assemble

Numerous error checks are done during the process of assembly, including illegal operand, immediate overflow, missing or duplicate label, text and data section overlap, etc.

Available output formats include binary, COE and a debug mode.

Disassemble

Disassembling can be done by opening a binary or COE file. All the instructions listed above and labels are supported, and multiple bytes of zero can be compressed into a .space directive.

Graphical user interface

  • Native GUI on Linux, Windows and Mac OSX.

  • Drag-and-drop to open a file.

  • Printing support.

  • Line number and syntax highlighting.

Command line interface

usage: mipsasm [OPTION]...
 -g,--graphical       Launch graphical user interface
 -h,--help            Display this help and exit
 -i,--input <FILE>    Read input from FILE
 -o,--output <FILE>   Write output to FILE
 -t,--terminal        Launch in terminal mode
 -w,--writer <TYPE>   Use writer of TYPE. TYPE can be 'binary', 'coe',
                      'debug' (the default), or 'hexdebug'

Sample code

# "Hello World" in MIPS assembly
# From: http://labs.cs.upt.ro/labs/so2/html/resources/nachos-doc/mipsf.html

	# All program code is placed after the
	# .text assembler directive
	.text 0x0

# The label 'main' represents the starting point
main:
	# Run the print_string syscall which has code 4
	li	$v0, 4		# Code for syscall: print_string
	la	$a0, msg	# Pointer to string (load the address of msg)
	syscall
	li	$v0, 10		# Code for syscall: exit
	syscall

	# All memory structures are placed after the
	# .data assembler directive
	.data 0x20

	# The .asciiz assembler directive creates
	# an ASCII string in memory terminated by
	# the null character. Note that strings are
	# surrounded by double-quotes

msg:	.asciiz	"Hello World!\n"
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].