Socket
Socket
Sign inDemoInstall

mlog-arithmetic-runner

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mlog-arithmetic-runner

An Mindustry Logic emulator built for automated testing of compilers.


Maintainers
1

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

  • set
  • jump
  • end
  • All ops since Mindustry V7 Beta (beta 140), except op noise
  • read and write memory cells and banks
  • getlink to get memory blocks (cells/banks)
  • set @counter or op @counter as unconditional jumps

Features

  • @tick and @time increases with processor runs
  • Stop emulation once some instruction jumps to itself
  • (Optional, Default) Stop emulation once @counter past the end
  • (Optional) Dump memory cells and banks
  • Dump variables into JSON report

Limitations

  • Does NOT have @this yet, so do @thisx and @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": {}
}

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc