From e667999a3d86ff216e9eda1dc6b9675ee2836030 Mon Sep 17 00:00:00 2001 From: Richard Patel Date: Thu, 7 Apr 2022 05:40:22 +0200 Subject: [PATCH] disasm-py: temporarily remove field accessors --- Cargo.lock | 225 +++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + disasm-py/src/lib.rs | 62 +----------- 3 files changed, 229 insertions(+), 59 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index af63569..43dc262 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -55,6 +55,16 @@ dependencies = [ "textwrap", ] +[[package]] +name = "ctor" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c" +dependencies = [ + "quote", + "syn", +] + [[package]] name = "dol" version = "0.1.0" @@ -87,6 +97,17 @@ dependencies = [ "wasi", ] +[[package]] +name = "ghost" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5bcf1bbeab73aa4cf2fde60a846858dc036163c7c33bec309f8d17de785479" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "hashbrown" version = "0.11.2" @@ -112,6 +133,60 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "indoc" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8" +dependencies = [ + "indoc-impl", + "proc-macro-hack", +] + +[[package]] +name = "indoc-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", + "unindent", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "inventory" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0eb5160c60ba1e809707918ee329adb99d222888155835c6feedba19f6c3fd4" +dependencies = [ + "ctor", + "ghost", + "inventory-impl", +] + +[[package]] +name = "inventory-impl" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e41b53715c6f0c4be49510bb82dee2c1e51c8586d885abe65396e82ed518548" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "itertools" version = "0.10.3" @@ -133,6 +208,16 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +[[package]] +name = "lock_api" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "memchr" version = "2.4.1" @@ -158,6 +243,12 @@ dependencies = [ "libc", ] +[[package]] +name = "once_cell" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" + [[package]] name = "os_str_bytes" version = "6.0.0" @@ -167,6 +258,31 @@ dependencies = [ "memchr", ] +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + [[package]] name = "parse_int" version = "0.6.0" @@ -176,6 +292,25 @@ dependencies = [ "num-traits", ] +[[package]] +name = "paste" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" +dependencies = [ + "paste-impl", + "proc-macro-hack", +] + +[[package]] +name = "paste-impl" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" +dependencies = [ + "proc-macro-hack", +] + [[package]] name = "petgraph" version = "0.6.0" @@ -226,6 +361,14 @@ dependencies = [ "syn", ] +[[package]] +name = "ppc750cl-py" +version = "0.1.1" +dependencies = [ + "ppc750cl", + "pyo3", +] + [[package]] name = "ppc750cl-rand" version = "0.1.1" @@ -241,6 +384,12 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + [[package]] name = "proc-macro2" version = "1.0.37" @@ -250,6 +399,55 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "pyo3" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35100f9347670a566a67aa623369293703322bb9db77d99d7df7313b575ae0c8" +dependencies = [ + "cfg-if", + "indoc", + "inventory", + "libc", + "parking_lot", + "paste", + "pyo3-build-config", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d12961738cacbd7f91b7c43bc25cfeeaa2698ad07a04b3be0aa88b950865738f" +dependencies = [ + "once_cell", +] + +[[package]] +name = "pyo3-macros" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0bc5215d704824dfddddc03f93cb572e1155c68b6761c37005e1c288808ea8" +dependencies = [ + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71623fc593224afaab918aa3afcaf86ed2f43d34f6afde7f3922608f253240df" +dependencies = [ + "proc-macro2", + "pyo3-build-config", + "quote", + "syn", +] + [[package]] name = "quote" version = "1.0.17" @@ -289,12 +487,27 @@ dependencies = [ "getrandom", ] +[[package]] +name = "redox_syscall" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +dependencies = [ + "bitflags", +] + [[package]] name = "ryu" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + [[package]] name = "serde" version = "1.0.136" @@ -337,6 +550,12 @@ dependencies = [ "rand_core", ] +[[package]] +name = "smallvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" + [[package]] name = "strsim" version = "0.10.0" @@ -395,6 +614,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "unindent" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514672a55d7380da379785a4d70ca8386c8883ff7eaae877be4d2081cebe73d8" + [[package]] name = "wasi" version = "0.10.2+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index fb5f89a..71aa117 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] members = [ "disasm", + "disasm-py", "dol", "fuzz", "genisa", diff --git a/disasm-py/src/lib.rs b/disasm-py/src/lib.rs index 5db763c..6a2c9a5 100644 --- a/disasm-py/src/lib.rs +++ b/disasm-py/src/lib.rs @@ -2,33 +2,11 @@ use pyo3::prelude::*; use pyo3::types::PyBytes; use pyo3::{PyIterProtocol, PyObjectProtocol}; +use ppc750cl::formatter::FormattedIns; + #[pyclass] struct Ins(ppc750cl::Ins); -macro_rules! ins_ufield { - ($name:ident) => { - #[pymethods] - impl Ins { - #[getter] - fn $name(&self) -> PyResult { - Ok(self.0.$name() as u32) - } - } - }; -} - -macro_rules! ins_ifield { - ($name:ident) => { - #[pymethods] - impl Ins { - #[getter] - fn $name(&self) -> PyResult { - Ok(self.0.$name() as i32) - } - } - }; -} - #[pymethods] impl Ins { #[new] @@ -47,40 +25,6 @@ impl Ins { } } -ins_ufield!(rc); -ins_ufield!(aa); -ins_ufield!(lk); -ins_ufield!(l); -ins_ufield!(oe); -ins_ufield!(w); -ins_ufield!(s); -ins_ufield!(d); -ins_ufield!(a); -ins_ufield!(b); -ins_ufield!(c); -ins_ufield!(crb_d); -ins_ufield!(crb_a); -ins_ufield!(crb_b); -ins_ufield!(crm); -ins_ufield!(sr); -ins_ufield!(spr); -ins_ufield!(fm); -ins_ufield!(crf_d); -ins_ufield!(crf_s); -ins_ifield!(simm); -ins_ufield!(uimm); -ins_ufield!(bo); -ins_ufield!(bi); -ins_ufield!(sh); -ins_ufield!(mb); -ins_ufield!(me); -ins_ufield!(me_31sub); -ins_ifield!(bd); -ins_ifield!(li); -ins_ufield!(to); -ins_ufield!(ps_l); -ins_ifield!(ps_d); - impl From for Ins { fn from(ins: ppc750cl::Ins) -> Self { Self(ins) @@ -90,7 +34,7 @@ impl From for Ins { #[pyproto] impl<'a> PyObjectProtocol<'a> for Ins { fn __str__(&self) -> String { - self.0.to_string() + FormattedIns(self.0.clone()).to_string() } }