#汇编 #自定义

bin+lib customasm

自定义指令集汇编器!

26 个版本

0.13.7 2024 年 6 月 30 日
0.13.5 2024 年 1 月 20 日
0.13.4 2023 年 10 月 7 日
0.13.2 2023 年 7 月 2 日
0.10.6 2020 年 3 月 28 日

#175硬件支持

每月 22 次下载

Apache-2.0

445KB
15K SLoC

customasm

customasm 是一个汇编器,允许您提供自己的 自定义指令集 来汇编您的源文件!如果您正在尝试测试新虚拟机的字节码,或者如果您急于编写针对您在 FPGA 芯片中刚刚实现的新微处理器架构的程序,它将非常有用!

crates.io Latest Release Releases

Discord GitHub Sponsor

🖥️ 现在就在您的网页浏览器中试试!

🕹️ 查看针对 NES 的示例项目

⌨️ 安装 VSCode 语法高亮扩展!

❤️ 支持作者!

文档

📚 查看维基百科 以获取变更日志、文档和入门指南!

💲 查看命令行帮助!(在命令行本身上格式更好)

安装

您可以通过运行 cargo install customasm 直接从 crates.io 安装。然后,customasm 应用程序应自动在您的命令行环境中可用。

您还可以从 发布部分 下载预先构建的可执行文件。

您可以通过首先克隆存储库然后运行 cargo build 来从源代码进行编译。还有一系列测试可用,在 cargo test

示例

给定以下文件

#ruledef
{
    load r1, {value: i8} => 0x11 @ value
    load r2, {value: i8} => 0x12 @ value
    load r3, {value: i8} => 0x13 @ value
    add  r1, r2          => 0x21
    sub  r3, {value: i8} => 0x33 @ value
    jnz  {address: u16}  => 0x40 @ address
    ret                  => 0x50
}

multiply3x4:
    load r1, 0
    load r2, 3
    load r3, 4
    
    .loop:
        add r1, r2
        sub r3, 1
        jnz .loop
    
    ret

...汇编器将使用 #ruledef 指令将指令转换为二进制代码

 outp | addr | data (base 16)

  0:0 |    0 |          ; multiply3x4:
  0:0 |    0 | 11 00    ; load r1, 0
  2:0 |    2 | 12 03    ; load r2, 3
  4:0 |    4 | 13 04    ; load r3, 4
  6:0 |    6 |          ; .loop:
  6:0 |    6 | 21       ; add r1, r2
  7:0 |    7 | 33 01    ; sub r3, 1
  9:0 |    9 | 40 00 06 ; jnz .loop
  c:0 |    c | 50       ; ret

依赖关系

~0.8–1MB
~15K SLoC