Skip to main content

py_register_machine2

A Register Machine package for Python3

You might take a look at the docs for a lot information about design, usage and the complete code documentation.

Installing PyRegisterMachine2

py_register_machine2 is a python3 package, so all you need to do is to place the project folder in your $PYTHONPATH. You are able to get the pythonpath using echo $PYTHONPATH and python3 -c "import sys; print(sys.path)".

So you are able to install the package using:

cd /usr/local/lib/python3.5/dist-packages/
git clone https://github.com/daknuett/py_register_machine2

Or:

python3 -m pip install py_register_machine2

Using PyRegisterMachine2

Using Prepared Machines

In py_register_machine2.machines is a bunch of modules providing a bunch of register machine definitions those are functions returning a 4-tuple: (processor, rom, ram, flash), maybe you need to invoke processor.setup_done().

Creating Your Own Machines

If the prepared machines do not match your requirements you might want to create your own machines, to do so you should study the docs here.

Instructionset, Machinecode and Assembly

The Instructionset of a machine is defined by obhects inherited from py_register_machine2.core.commands.BaseCommand, a bunch of ready-to-use commands is in py_register_machine2.commands.

The processor reads one word of data for the opcode, decodes this opcode and reads n words of data for n arguments. Machinecode can be witten using list objects like this:

program = [0x16, 0x01, 0x01] # using the py_register_machine2.commands.basic_commands instructionset
# this equals "ldi 0x01 ECR" and will halt the engine.

This machinecode can be programmed to a persistent device (ROM or Flash) using

rom.program(program)
# or
flash.program(program)

There is a basic Assembler in py_register_machine2.tools.assembler.assembler that uses the KASM2 assembly language to generate machiecode ( a list object)

The Assembler uses a configured Processor and an open stream to generate the machinecode:

from io import StringIO
processor.setup_done()
progstr = "ldi 0x01 ECR"
asm = Assembler(processor, StringIO(progstr))
program = asm.assemble()

Once the ROM is programmed (the Processor starts executing code in the ROM) you are able to run the code using:

processor.run()

Metadata

Release files for py-register-machine2 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-register-machine2 0.1.5
File Size Uploaded
py_register_machine2-0.1.5.tar.gz 26.6 kB Details

Release files / py_register_machine2-0.1.5.tar.gz

Download URL py_register_machine2-0.1.5.tar.gz
Size 26.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ddc80b189f53070e13e7c448c6426b8f60fc281b8f693611562d327472920e96
BLAKE2b-256 checksum
How to use checksums
c03e080d4209fa79e567b4f59df5dc3b3fc577cb0e06895a49caf204168c573e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3

Release history Release notifications | RSS feed

This release

0.1.5 This release

1 release file

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page