MIX Assembly Language Simulator
Project description
MIXAL
A MIX assembly language simulator.
Install
Make sure you have a C++ 11 compiler and execute:
pip install mixal
For MacOS users, you may need to use:
MACOSX_DEPLOYMENT_TARGET=10.9 pip install mixal
Sample
A sample code that finds the maximum value:
import random
import mixal
# Initialize an environment
computer = mixal.Computer()
# The location for register J
end_point = 3500
# Load the assembly codes.
# Note that the location for register J is set to HLT
# to make sure the codes halt eventually
computer.loadCodes([
'X EQU 1000',
' ORIG 3000',
'MAXIMUM STJ EXIT',
'INIT ENT3 0,1',
' JMP CHANGEM',
'LOOP CMPA X,3',
' JGE *+3',
'CHANGEM ENT2 0,3',
' LDA X,3',
' DEC3 1',
' J3P LOOP',
'EXIT JMP *',
' ORIG {}'.format(end_point),
' HLT',
])
num_numbers, max_val = 100, 0
# Register I1 denotes the number of integers in the memory buffer
computer.rI1.set(num_numbers)
# Register J stores the returning location
computer.rJ.set(end_point)
for i in range(1001, 1001 + num_numbers):
val = random.randint(0, 100000)
# Set random values to memory
computer.memoryAt(i).set(val)
max_val = max(max_val, val)
# Execute until the HLT operation
computer.executeUntilHalt()
print('Expected:', max_val)
# Register A stores the final maximum value
print('Actual:', computer.rA.value())
# The units of time for executing the codes, exclude the halt operation.
print('Compute Cost:', computer.elapsed())
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
mixal-1.157.12.tar.gz
(508.9 kB
view hashes)