Project

asmrepl

0.04
The project is in a healthy, maintained state
Tired of writing assembly and them assembling it? Now you can write assembly and evaluate it!
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
 Dependencies

Development

~> 4.0
~> 5.14
~> 13.0

Runtime

~> 2
 Project Readme

ASMREPL

This is a REPL for assembly language.

Usage

Install the gem:

$ gem install asmrepl

Then start the repl like this:

$ asmrepl

If you're on macOS, you'll need to start the repl with sudo.

When the REPL starts, it will display all register values and flags:

================== CPU STATE ===================
rax  000000000000000000  r8   0x0000600001782be0
rbx  000000000000000000  r9   0x00007fbf9b0068c0
rcx  0x0000000109dae951  r10  000000000000000000
rdx  0x000000000000000c  r11  0x000000010999c000
rdi  0x00007ff7b6b2bbf0  r12  000000000000000000
rsi  0x00000001096315fd  r13  0x00007ff7b6b2bdc0
rbp  0x00007ff7b6b2bc40  r14  000000000000000000
rsp  0x00007ff7b6b2bc38  r15  000000000000000000

rip     0x000000010999c001
rflags  0x0000000000000246
cs      0x000000000000002b
fs      000000000000000000
gs      000000000000000000

FLAGS: ["PF", "ZF", "IF"]

>> 

Then you can issue commands and inspect register values. Let's write to the rax register and inspect its value:

>> mov rax, 5
>> rax
0x0000000000000005
>> 

Now let's write to the rbx register and add the two values:

>> mov rbx, 3
>> add rax, rbx
>> rax
0x0000000000000008
>> rbx
0x0000000000000003
>> 

Finally, lets check all values in the CPU:

>> cpu
================== CPU STATE ===================
rax  0x0000000000000008  r8   0x0000600001d848a0
rbx  0x0000000000000003  r9   0x00007fced316f850
rcx  0x00000001017da951  r10  000000000000000000
rdx  0x000000000000000c  r11  0x00000001013cc000
rdi  0x00007ff7bf0fdbf0  r12  000000000000000000
rsi  0x000000010105f5fd  r13  0x00007ff7bf0fddc0
rbp  0x00007ff7bf0fdc40  r14  000000000000000000
rsp  0x00007ff7bf0fdc38  r15  000000000000000000

rip     0x00000001013cc029
rflags  0x0000000000000202
cs      0x000000000000002b
fs      000000000000000000
gs      000000000000000000

FLAGS: ["IF"]

>>