Skip to content

Commit

Permalink
feat: update rgb isa instrs
Browse files Browse the repository at this point in the history
  • Loading branch information
crisdut committed Jan 22, 2024
1 parent 729c652 commit 73d7b0c
Show file tree
Hide file tree
Showing 4 changed files with 139 additions and 86 deletions.
3 changes: 1 addition & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,7 @@ wasm-bindgen-test = "0.3"

[package.metadata.docs.rs]
features = [ "all" ]

[patch.crates-io]
# TODO: Remove after new release
aluvm = { git = "https://github.com/AluVM/rust-aluvm", branch = "master" }
27 changes: 24 additions & 3 deletions src/vm/macroasm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#[macro_export]
macro_rules! rgbasm {
($( $tt:tt )+) => {{ #[allow(unused_imports)] {
use $crate::AssignmentType;
use $crate::vm::{RgbIsa, ContractOp, TimechainOp};
use $crate::vm::aluasm_isa;
use $crate::isa_instr;
Expand All @@ -34,8 +35,28 @@ macro_rules! rgbasm {
macro_rules! isa_instr {
(pcvs $no:literal) => {{ RgbIsa::Contract(ContractOp::PcVs($no.into())) }};
(pccs $no1:literal, $no2:literal) => {{ RgbIsa::Contract(ContractOp::PcCs($no1.into(), $no2.into())) }};
(ldg $t:literal, $no:literal,s16[$s_idx:literal]) => {{ RgbIsa::Contract(ContractOp::LdG($t.into(), $no, RegS::from($s_idx))) }};
(lds $t:literal, $no:literal,s16[$s_idx:literal]) => {{ RgbIsa::Contract(ContractOp::LdS($t.into(), $no, RegS::from($s_idx))) }};
(ldp $t:literal, $no:literal,s16[$s_idx:literal]) => {{ RgbIsa::Contract(ContractOp::LdP($t.into(), $no, RegS::from($s_idx))) }};
(cng $t:literal,a8[$a_idx:literal]) => {{ RgbIsa::Contract(ContractOp::CnG($t.into(), Reg32::from($a_idx))) }};
(cnc $t:literal,a16[$a_idx:literal]) => {{ RgbIsa::Contract(ContractOp::CnC($t.into(), Reg32::from($a_idx))) }};
(ldg $t:literal,a8[$a_idx:literal],s16[$s_idx:literal]) => {{
RgbIsa::Contract(ContractOp::LdG(
GlobalStateType::from($t as u16),
Reg32::from($a_idx),
RegS::from($s_idx),
))
}};
(ldp $t:literal,a16[$a_idx:literal],s16[$s_idx:literal]) => {{
RgbIsa::Contract(ContractOp::LdS(
AssignmentType::from($t as u16),
Reg32::from($a_idx),
RegS::from($s_idx),
))
}};
(lds $t:literal,a16[$a_idx:literal],s16[$s_idx:literal]) => {{
RgbIsa::Contract(ContractOp::LdS(
AssignmentType::from($t as u16),
Reg32::from($a_idx),
RegS::from($s_idx),
))
}};
($op:ident $($tt:tt)+) => {{ compile_error!(concat!("unknown RGB assembly opcode `", stringify!($op), "`")) }};
}
Loading

0 comments on commit 73d7b0c

Please sign in to comment.