5 个版本

使用旧 Rust 2015

0.1.4 2021 年 11 月 15 日
0.1.3 2021 年 8 月 10 日
0.1.2 2016 年 2 月 22 日
0.1.1 2016 年 2 月 16 日
0.1.0 2016 年 2 月 11 日

#306模拟器


被用于 ya6502

Apache-2.0/MIT

57KB
1K SLoC

一个作为宏实现的 MOS6502 汇编器 构建状态

如果你想要失去一点理智,那么这个库就是为你准备的!

(不开玩笑,你真的想用一个 来汇编东西?)

文档

实现的功能

  • 完整的编译时汇编到可执行机器代码
  • 机器代码以常量 u8 数组的形式输出(你可以将其存储在 staticconst 中)
  • 支持标签(例如 loop: jmp loopbeq start
  • 支持所有官方 6502 指令和寻址模式

lib.rs:

一个作为宏实现的 MOS6502 汇编器。

注意:由于 Rust 宏的限制,与典型的 6502 汇编语法有两个偏差

  • 对于绝对寻址模式,需要在助记符后使用 abs(例如 lda abs 0xffff)。
  • 对于累加器寻址模式,需要在助记符后使用 a(例如 lsr a)。

示例

#[macro_use] #[no_link]
extern crate rustasm6502;

fn main() {
    let machine_code = assemble6502! {
        lda #0x00
        ldx #0x00
        ldy #0x00
        txs

    main:
        adc 0xff        // Zero-Page
        adc abs 0x1234  // Absolute address 0x1234
        ror a           // Rotate the accumulator
        beq main
    end:
        jmp end
    };

    assert_eq!(machine_code, [
        0xA9, 0x00,
        0xA2, 0x00,
        0xA0, 0x00,
        0x9A,

        0x65, 0xff,
        0x6D, 0x34, 0x12,   // Little-endian
        0x6A,
        0xF0, (-8i8) as u8,

        0x4C, 15, 0,
    ]);
}

无运行时依赖