An Mindustry Logic emulator built for automated testing of compilers.
Project description
MlogArithmeticRunner
A Mindustry Logic emulator built for automated testing of compilers (like MlogEvo).
Install
pip install https://github.com/UMRnInside/MlogArithmeticRunner
or
pip install mlog_arithmetic_runner
Usage
$ python3 -m mlog_arithmetic_runner --help
usage: mlog_arithmetic_runner [-h] [--limit LIMIT] [--continue-if-past-the-end] [--ipt IPT]
[--memory-banks MEMORY_BANKS] [--memory-cells MEMORY_CELLS]
[--json-indent JSON_INDENT] [--json-dump-memory-blocks]
Reads some mlog code from stdin, runs it, and generates JSON report
optional arguments:
-h, --help show this help message and exit
--limit LIMIT Max instructions/cycles allowed, something like TimeLimit
--continue-if-past-the-end
--ipt IPT Instructions per tick. 2 for micro-processor, 8 for logic-processor,
25 for hyper-processor
--memory-banks MEMORY_BANKS
Memory bank count
--memory-cells MEMORY_CELLS
Memory cell count
--json-indent JSON_INDENT
JSON indent, set 0 to disable
--json-dump-memory-blocks
dump all memory content in JSON report
Supported Instructions
setjumpend- All
ops since Mindustry V7 Beta (beta 140), exceptop noise readandwritememory cells and banksgetlinkto get memory blocks (cells/banks)set @counterorop @counteras unconditional jumps
Features
@tickand@timeincreases with processor runs- Stop emulation once some instruction jumps to itself
- (Optional, Default) Stop emulation once
@counterpast the end - (Optional) Dump memory cells and banks
- Dump variables into JSON report
Limitations
- Does NOT have
@thisyet, so do@thisxand@thisy - No comment in mlog code
- (not sure)
Python Usage
from mlog_arithmetic_runner import MlogProcessor
processor = MlogProcessor(ipt=2, memory_cells=0, memory_banks=0)
code = """\
set a 90
op sin b a 0
"""
processor.assemble_code(code)
processor.run_with_limit(1000)
# When comparing 2 float-point numbers, remember there could be float precision errors.
# Use abs(a-b) < 1e-6 instead of a == b
print("a =", processor.get_variable("a"))
print("b =", processor.get_variable("b"))
JSON Report Sample
set a 1
set a 2
set b @tick
set c @time
This generates:
{
"cycles": 4,
"success": true,
"reason": "",
"variables": {
"a": 2.0,
"b": 1,
"c": 0.016666666666666666
},
"memory_blocks": {}
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mlog_arithmetic_runner-0.0.5-py3-none-any.whl.
File metadata
- Download URL: mlog_arithmetic_runner-0.0.5-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
723320bb4cd1d0a9a73836d4277a1ed7428f902036b64383b120a20dda15da6f
|
|
| MD5 |
d139cd8734933a5bec56a6bdd4a7160b
|
|
| BLAKE2b-256 |
f0695279508d79a4c727f025a666a44ddbd270a411feac57d4d8b5bfa96124fa
|