ponyo

Ponyo is a (work-in-progress) ISA simulator currently supporting (some of) LEGv8. It also aims to be a framework for implementing simulators for any number of ISAs.

A blog post describing the initial development of this project is on my blog here.

Simulator

  • ARM LEGv8 Simulator
    • Harvard architecture
    • Takes in assembly source code
    • Takes in memory file
    • Step through program execution
    • Jump to pre-defined break points in code

CLI

usage: ponyo [-h] -f ASM [-d MEM] [--isa ISA] [--debug] [--gui]

options:
  -h, --help         show this help message and exit
  -f ASM, --asm ASM  Assembly file
  -d MEM, --mem MEM  Data memory file
  --isa ISA          ISA of assembly file
  --debug
  --gui

Execute directly:

$ ./ponyo/ponyo.py -f examples/legv8/fib.asm --debug

Install using pip:

$ git clone https://github.com/nobodywasishere/ponyo
$ cd ponyo
$ pip install .
...
$ ponyo -f examples/legv8/fib.asm --gui

Set breakpoints in the assembly by adding //$break on any given line.

GUI

Simply run ponyo with the --gui flag and the assembly file you wish to run.




Supported Architectures

LEGv8 Harvard

33/57 instructions supported

  • [x] ADD, ADDI, ADDS, ADDIS
  • [x] AND, ANDI, ANDS, ANDIS
  • [x] B, B.COND, BL, BR, CBNZ, CBZ
  • [x] EOR, EORI
  • [x] LDUR, LDURB, LDURH
  • [ ] LDURSW, LDXR
  • [x] LSL, LSR
  • [ ] MOVK, MOVZ
  • [x] ORR, ORRI
  • [x] STUR, STURB, STURH
  • [ ] STURSW, STXR

  • [x] SUB, SUBI, SUBS, SUBIS

  • [ ] FADDS, FADDD, FCMPS, FCMPD, FDIVS, FDIVD, FMULS, FMULD, FSUBS, FSUBD

  • [ ] LDURS, LDURD, MUL, SDIV, SMULH, UDIV, UMULH

  • [x] CMP, CMPI, MOV

  • [ ] LDA

EccCPU

13/13 instructions supported




Fishbowl icon created by Becris - Flaticon