Emulator for the RASP machines proposed by Cook & Reckow in 1973
Project description
RASP Machines
This is a small Python 3 emulator for the random access stored procedure machine (RASP) designed by Cook & Reckhow in 1973 below. I developed this as a companion tool for a course in algorithms & data structures, where it helps (I hope) to with understanding computation models, growth orders and the applicability of the Big-O notation.
- Cook, Stephen A., and Robert A. Reckhow. "Time bounded random access machines." Journal of Computer and System Sciences 7, no. 4 (1973): 354–375. DOI
In a nutshell, the RASP machine is a mini computer with eight instructions, two registers (an accumulator and instruction pointer), and an I/O device. As a computation model, it closely resembles an actual computer, as opposed to a Turing machine for instance.
How to install RASP?
The simplest way to install the latest version is to use PyPI as follows:
$ pip install rasp-machine
Please, refer to the documentation for a more comprehensive help!
How to use the RASP machine?
A Simple Program: Adding Two Integers
Let us consider a tiny program for the rasp machine. To simplify writing programs, RASP provides a simple assembly language, as shown below, with the code needed to read two integers from the I/O device and to print their sum back onto it.
segment: data
left 1 0
right 1 0
result 1 0
segment: code
read left ;; left = user_input()
read right ;; right = user_input()
load 0
add left
add right
store result ;; result = left + right
print result
halt -1
Provided we save the code above into a file named addition.asm
, we
can get the associated machine code, using the following command
$ rasp assemble addition.asm
Machine code saved in 'addition.rx'
Note that the option --debug
will yield machine code that contains
debugging information, useful when using the debugger.
Debugging & Executing RASP
Now we have the machine code, we can execute it using the following commands:
$ rasp execute addition.rx
rasp? 10
rasp? 20
30
Note that you can extract some performance measure (CPU cycle, read,
writes, etc.) using the --use-profiler
option.
Should there be any problem with the execution, we can start the associated debugger with the command:
$ rasp debug addition.rx
RASP-Machine 0.1.0
┼ debug >
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for RASP_Machine-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fbcc7290c0236ee1b509dd2c7ccc6314c96e086235621290b0523d6a38e52c11 |
|
MD5 | a47405fa44d7b569436b21ccd38c207a |
|
BLAKE2b-256 | c8820f0a2b8e61fab9ba156a61416dfa47f95247b9c1883641318bcc75734ecd |