From 4d163a2313a0be3654f02e15f847029b076833ea Mon Sep 17 00:00:00 2001 From: mlokr Date: Fri, 20 Sep 2024 08:09:29 +0200 Subject: [PATCH] bruhma --- Cargo.lock | 320 +----- hblang/Cargo.toml | 4 +- hblang/src/son.rs | 798 ++++++++------- ited: | 2411 --------------------------------------------- 4 files changed, 390 insertions(+), 3143 deletions(-) delete mode 100644 ited: diff --git a/Cargo.lock b/Cargo.lock index 805b971..a7d03f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,119 +2,11 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "anstream" -version = "0.6.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" - -[[package]] -name = "anstyle-parse" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" -dependencies = [ - "anstyle", - "windows-sys", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "colorchoice" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" - -[[package]] -name = "env_filter" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "humantime", - "log", -] - [[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", -] [[package]] name = "hbbytecode" @@ -128,9 +20,7 @@ version = "0.1.0" name = "hblang" version = "0.1.0" dependencies = [ - "env_logger", "hbvm", - "log", "regalloc2", ] @@ -149,36 +39,12 @@ dependencies = [ "memmap2", ] -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - [[package]] name = "libc" version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - [[package]] name = "memmap2" version = "0.9.5" @@ -188,212 +54,28 @@ dependencies = [ "libc", ] -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - [[package]] name = "regalloc2" version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12908dbeb234370af84d0579b9f68258a0f67e201412dd9a2814e6f45b2fc0f0" +source = "git+https://github.com/jakubDoka/regalloc2#7e74b2fde4f022816cded93ab5685e46f8e3a159" dependencies = [ "hashbrown", - "log", "rustc-hash", - "slice-group-by", "smallvec", ] -[[package]] -name = "regex" -version = "1.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" - [[package]] name = "rustc-hash" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" -[[package]] -name = "slice-group-by" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" - [[package]] name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -[[package]] -name = "syn" -version = "2.0.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - [[package]] name = "xtask" version = "0.1.0" - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/hblang/Cargo.toml b/hblang/Cargo.toml index 5dab6dc..90a0c45 100644 --- a/hblang/Cargo.toml +++ b/hblang/Cargo.toml @@ -8,7 +8,5 @@ name = "hbc" path = "src/main.rs" [dependencies] -env_logger = "0.11.5" hbvm = { path = "../hbvm", features = ["nightly"] } -log = "0.4.22" -regalloc2 = { version = "0.10.2", features = ["trace-log"] } +regalloc2 = { git = "https://github.com/jakubDoka/regalloc2" } diff --git a/hblang/src/son.rs b/hblang/src/son.rs index c4e7d2a..51da797 100644 --- a/hblang/src/son.rs +++ b/hblang/src/son.rs @@ -1712,8 +1712,7 @@ impl Codegen { self.ci.emit(instrs::st(reg::RET_ADDR, reg::STACK_PTR, 0, 0)); } - self.ci.nodes.basic_blocks(); - + //self.ci.nodes.basic_blocks(); //self.ci.nodes.graphviz(); self.ci.vars = orig_vars; @@ -1761,412 +1760,6 @@ impl Codegen { } fn emit_body(&mut self, sig: Sig) -> usize { - // FIXME: make this more efficient (allocated with arena) - - #[derive(Debug)] - struct Block { - nid: Nid, - preds: Vec, - succs: Vec, - instrs: regalloc2::InstRange, - params: Vec, - branch_blockparams: Vec, - } - - #[derive(Debug)] - struct Instr { - nid: Nid, - ops: Vec, - } - - struct Function<'a> { - sig: Sig, - nodes: &'a mut Nodes, - tys: &'a Types, - blocks: Vec, - instrs: Vec, - } - - impl Debug for Function<'_> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - for (i, block) in self.blocks.iter().enumerate() { - writeln!(f, "sb{i}{:?}-{:?}:", block.params, block.preds)?; - - for inst in block.instrs.iter() { - let instr = &self.instrs[inst.index()]; - writeln!( - f, - "{}: i{:?}:{:?}", - inst.index(), - self.nodes[instr.nid].kind, - instr.ops - )?; - } - - writeln!(f, "eb{i}{:?}-{:?}:", block.branch_blockparams, block.succs)?; - } - Ok(()) - } - } - - impl<'a> Function<'a> { - fn new(nodes: &'a mut Nodes, tys: &'a Types, sig: Sig) -> Self { - let mut s = Self { - nodes, - tys, - sig, - blocks: Default::default(), - instrs: Default::default(), - }; - s.nodes.visited.clear(s.nodes.values.len()); - s.emit_node(VOID, VOID); - s.add_block(0); - s.blocks.pop(); - s - } - - fn add_block(&mut self, nid: Nid) -> RallocBRef { - if let Some(prev) = self.blocks.last_mut() { - prev.instrs = regalloc2::InstRange::new( - prev.instrs.first(), - regalloc2::Inst::new(self.instrs.len()), - ); - } - - self.blocks.push(Block { - nid, - preds: Default::default(), - succs: Default::default(), - instrs: regalloc2::InstRange::new( - regalloc2::Inst::new(self.instrs.len()), - regalloc2::Inst::new(self.instrs.len() + 1), - ), - params: Default::default(), - branch_blockparams: Default::default(), - }); - self.blocks.len() as RallocBRef - 1 - } - - fn add_instr(&mut self, nid: Nid, ops: Vec) { - self.instrs.push(Instr { nid, ops }); - } - - fn urg(&mut self, nid: Nid) -> regalloc2::Operand { - regalloc2::Operand::reg_use(self.rg(nid)) - } - - fn def_nid(&mut self, _nid: Nid) {} - - fn drg(&mut self, nid: Nid) -> regalloc2::Operand { - self.def_nid(nid); - regalloc2::Operand::reg_def(self.rg(nid)) - } - - fn rg(&self, nid: Nid) -> VReg { - regalloc2::VReg::new(nid as _, regalloc2::RegClass::Int) - } - - fn emit_node(&mut self, nid: Nid, prev: Nid) { - if matches!(self.nodes[nid].kind, Kind::Region | Kind::Loop) { - let prev_bref = self.nodes[prev].ralloc_backref; - let node = self.nodes[nid].clone(); - - let idx = 1 + node.inputs.iter().position(|&i| i == prev).unwrap(); - - for ph in node.outputs { - if self.nodes[ph].kind != Kind::Phi { - continue; - } - - let rg = self.rg(self.nodes[ph].inputs[idx]); - self.blocks[prev_bref as usize].branch_blockparams.push(rg); - } - - self.add_instr(nid, vec![]); - - match (self.nodes[nid].kind, self.nodes.visited.set(nid)) { - (Kind::Loop, false) => { - for i in node.inputs { - self.bridge(i, nid); - } - return; - } - (Kind::Region, true) => return, - _ => {} - } - } else if !self.nodes.visited.set(nid) { - return; - } - - let node = self.nodes[nid].clone(); - match node.kind { - Kind::Start => self.emit_node(node.outputs[0], VOID), - Kind::End => {} - Kind::If => { - self.nodes[nid].ralloc_backref = self.nodes[prev].ralloc_backref; - - let &[_, cond] = node.inputs.as_slice() else { unreachable!() }; - let &[mut then, mut else_] = node.outputs.as_slice() else { - unreachable!() - }; - - if let Kind::BinOp { op } = self.nodes[cond].kind - && let Some((_, swapped)) = op.cond_op(node.ty.is_signed()) - { - if swapped { - std::mem::swap(&mut then, &mut else_); - } - let &[_, lhs, rhs] = self.nodes[cond].inputs.as_slice() else { - unreachable!() - }; - let ops = vec![self.urg(lhs), self.urg(rhs)]; - self.add_instr(nid, ops); - } else { - todo!() - } - - self.emit_node(then, nid); - self.emit_node(else_, nid); - } - Kind::Region | Kind::Loop => { - self.nodes[nid].ralloc_backref = self.add_block(nid); - if node.kind == Kind::Region { - for i in node.inputs { - self.bridge(i, nid); - } - } - let mut block = vec![]; - for ph in node.outputs.clone() { - if self.nodes[ph].kind != Kind::Phi { - continue; - } - self.def_nid(ph); - block.push(self.rg(ph)); - } - self.blocks[self.nodes[nid].ralloc_backref as usize].params = block; - for o in node.outputs.into_iter().rev() { - self.emit_node(o, nid); - } - } - Kind::Return => { - let ops = if node.inputs[1] != VOID { - vec![regalloc2::Operand::reg_fixed_use( - self.rg(node.inputs[1]), - regalloc2::PReg::new(1, regalloc2::RegClass::Int), - )] - } else { - vec![] - }; - self.add_instr(nid, ops); - self.emit_node(node.outputs[0], nid); - } - Kind::CInt { .. } => { - let ops = vec![self.drg(nid)]; - self.add_instr(nid, ops); - } - Kind::Phi => {} - Kind::Tuple { index } => { - let is_start = self.nodes[node.inputs[0]].kind == Kind::Start && index == 0; - if is_start || (self.nodes[node.inputs[0]].kind == Kind::If && index < 2) { - self.nodes[nid].ralloc_backref = self.add_block(nid); - self.bridge(prev, nid); - - if is_start { - let mut parama = self.tys.parama(self.sig.ret); - for (arg, ti) in self.nodes[VOID] - .clone() - .outputs - .into_iter() - .skip(1) - .zip(self.sig.args.range()) - { - let ty = self.tys.args[ti]; - match self.tys.size_of(ty) { - 0 => continue, - 1..=8 => { - self.def_nid(arg); - self.add_instr(NEVER, vec![ - regalloc2::Operand::reg_fixed_def( - self.rg(arg), - regalloc2::PReg::new( - parama.next() as _, - regalloc2::RegClass::Int, - ), - ), - ]); - } - _ => todo!(), - } - } - } - - for o in node.outputs.into_iter().rev() { - self.emit_node(o, nid); - } - } else { - todo!(); - } - } - Kind::BinOp { op } => { - let &[_, lhs, rhs] = node.inputs.as_slice() else { unreachable!() }; - - let ops = if let Kind::CInt { .. } = self.nodes[rhs].kind - && op.imm_binop(node.ty.is_signed(), 8).is_some() - { - vec![self.drg(nid), self.urg(lhs)] - } else if op.binop(node.ty.is_signed(), 8).is_some() { - vec![self.drg(nid), self.urg(lhs), self.urg(rhs)] - } else if op.cond_op(node.ty.is_signed()).is_some() { - return; - } else { - todo!("{op}") - }; - self.add_instr(nid, ops); - } - Kind::UnOp { .. } => { - let ops = vec![self.drg(nid), self.urg(node.inputs[1])]; - self.add_instr(nid, ops); - } - Kind::Call { func } => { - self.nodes[nid].ralloc_backref = self.nodes[prev].ralloc_backref; - let mut ops = vec![]; - - let fuc = self.tys.funcs[func as usize].sig.unwrap(); - if self.tys.size_of(fuc.ret) != 0 { - self.def_nid(nid); - ops.push(regalloc2::Operand::reg_fixed_def( - self.rg(nid), - regalloc2::PReg::new(1, regalloc2::RegClass::Int), - )); - } - - let mut parama = self.tys.parama(fuc.ret); - for (&i, ti) in node.inputs[1..].iter().zip(fuc.args.range()) { - let ty = self.tys.args[ti]; - match self.tys.size_of(ty) { - 0 => continue, - 1..=8 => { - ops.push(regalloc2::Operand::reg_fixed_use( - self.rg(i), - regalloc2::PReg::new( - parama.next() as _, - regalloc2::RegClass::Int, - ), - )); - } - _ => todo!(), - } - } - - self.add_instr(nid, ops); - - for o in node.outputs.into_iter().rev() { - if self.nodes[o].inputs[0] == nid { - self.emit_node(o, nid); - } - } - } - } - } - - fn bridge(&mut self, pred: u16, succ: u16) { - if self.nodes[pred].ralloc_backref == u16::MAX - || self.nodes[succ].ralloc_backref == u16::MAX - { - return; - } - self.blocks[self.nodes[pred].ralloc_backref as usize] - .succs - .push(regalloc2::Block::new(self.nodes[succ].ralloc_backref as usize)); - self.blocks[self.nodes[succ].ralloc_backref as usize] - .preds - .push(regalloc2::Block::new(self.nodes[pred].ralloc_backref as usize)); - } - } - - impl<'a> regalloc2::Function for Function<'a> { - fn num_insts(&self) -> usize { - self.instrs.len() - } - - fn num_blocks(&self) -> usize { - self.blocks.len() - } - - fn entry_block(&self) -> regalloc2::Block { - regalloc2::Block(0) - } - - fn block_insns(&self, block: regalloc2::Block) -> regalloc2::InstRange { - self.blocks[block.index()].instrs - } - - fn block_succs(&self, block: regalloc2::Block) -> &[regalloc2::Block] { - &self.blocks[block.index()].succs - } - - fn block_preds(&self, block: regalloc2::Block) -> &[regalloc2::Block] { - &self.blocks[block.index()].preds - } - - fn block_params(&self, block: regalloc2::Block) -> &[regalloc2::VReg] { - &self.blocks[block.index()].params - } - - fn is_ret(&self, insn: regalloc2::Inst) -> bool { - self.nodes[self.instrs[insn.index()].nid].kind == Kind::Return - } - - fn is_branch(&self, insn: regalloc2::Inst) -> bool { - matches!( - self.nodes[self.instrs[insn.index()].nid].kind, - Kind::If | Kind::Tuple { .. } | Kind::Loop | Kind::Region - ) - } - - fn branch_blockparams( - &self, - block: regalloc2::Block, - _insn: regalloc2::Inst, - _succ_idx: usize, - ) -> &[regalloc2::VReg] { - debug_assert!( - self.blocks[block.index()].succs.len() == 1 - || self.blocks[block.index()].branch_blockparams.is_empty() - ); - - &self.blocks[block.index()].branch_blockparams - } - - fn inst_operands(&self, insn: regalloc2::Inst) -> &[regalloc2::Operand] { - &self.instrs[insn.index()].ops - } - - fn inst_clobbers(&self, insn: regalloc2::Inst) -> regalloc2::PRegSet { - if matches!(self.nodes[self.instrs[insn.index()].nid].kind, Kind::Call { .. }) { - let mut set = regalloc2::PRegSet::default(); - for i in 2..12 { - set.add(regalloc2::PReg::new(i, regalloc2::RegClass::Int)); - } - set - } else { - regalloc2::PRegSet::default() - } - } - - fn num_vregs(&self) -> usize { - self.nodes.values.len() - } - - fn spillslot_size(&self, regclass: regalloc2::RegClass) -> usize { - match regclass { - regalloc2::RegClass::Int => 1, - regalloc2::RegClass::Float => unreachable!(), - regalloc2::RegClass::Vector => unreachable!(), - } - } - } - let mut nodes = std::mem::take(&mut self.ci.nodes); let func = Function::new(&mut nodes, &self.tys, sig); @@ -2492,6 +2085,392 @@ impl Codegen { } } +// FIXME: make this more efficient (allocated with arena) + +#[derive(Debug)] +struct Block { + nid: Nid, + preds: Vec, + succs: Vec, + instrs: regalloc2::InstRange, + params: Vec, + branch_blockparams: Vec, +} + +#[derive(Debug)] +struct Instr { + nid: Nid, + ops: Vec, +} + +struct Function<'a> { + sig: Sig, + nodes: &'a mut Nodes, + tys: &'a Types, + blocks: Vec, + instrs: Vec, +} + +impl Debug for Function<'_> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for (i, block) in self.blocks.iter().enumerate() { + writeln!(f, "sb{i}{:?}-{:?}:", block.params, block.preds)?; + + for inst in block.instrs.iter() { + let instr = &self.instrs[inst.index()]; + writeln!(f, "{}: i{:?}:{:?}", inst.index(), self.nodes[instr.nid].kind, instr.ops)?; + } + + writeln!(f, "eb{i}{:?}-{:?}:", block.branch_blockparams, block.succs)?; + } + Ok(()) + } +} + +impl<'a> Function<'a> { + fn new(nodes: &'a mut Nodes, tys: &'a Types, sig: Sig) -> Self { + let mut s = + Self { nodes, tys, sig, blocks: Default::default(), instrs: Default::default() }; + s.nodes.visited.clear(s.nodes.values.len()); + s.emit_node(VOID, VOID); + s.add_block(0); + s.blocks.pop(); + s + } + + fn add_block(&mut self, nid: Nid) -> RallocBRef { + if let Some(prev) = self.blocks.last_mut() { + prev.instrs = regalloc2::InstRange::new( + prev.instrs.first(), + regalloc2::Inst::new(self.instrs.len()), + ); + } + + self.blocks.push(Block { + nid, + preds: Default::default(), + succs: Default::default(), + instrs: regalloc2::InstRange::new( + regalloc2::Inst::new(self.instrs.len()), + regalloc2::Inst::new(self.instrs.len() + 1), + ), + params: Default::default(), + branch_blockparams: Default::default(), + }); + self.blocks.len() as RallocBRef - 1 + } + + fn add_instr(&mut self, nid: Nid, ops: Vec) { + self.instrs.push(Instr { nid, ops }); + } + + fn urg(&mut self, nid: Nid) -> regalloc2::Operand { + regalloc2::Operand::reg_use(self.rg(nid)) + } + + fn def_nid(&mut self, _nid: Nid) {} + + fn drg(&mut self, nid: Nid) -> regalloc2::Operand { + self.def_nid(nid); + regalloc2::Operand::reg_def(self.rg(nid)) + } + + fn rg(&self, nid: Nid) -> VReg { + regalloc2::VReg::new(nid as _, regalloc2::RegClass::Int) + } + + fn emit_node(&mut self, nid: Nid, prev: Nid) { + if matches!(self.nodes[nid].kind, Kind::Region | Kind::Loop) { + let prev_bref = self.nodes[prev].ralloc_backref; + let node = self.nodes[nid].clone(); + + let idx = 1 + node.inputs.iter().position(|&i| i == prev).unwrap(); + + for ph in node.outputs { + if self.nodes[ph].kind != Kind::Phi { + continue; + } + + let rg = self.rg(self.nodes[ph].inputs[idx]); + self.blocks[prev_bref as usize].branch_blockparams.push(rg); + } + + self.add_instr(nid, vec![]); + + match (self.nodes[nid].kind, self.nodes.visited.set(nid)) { + (Kind::Loop, false) => { + for i in node.inputs { + self.bridge(i, nid); + } + return; + } + (Kind::Region, true) => return, + _ => {} + } + } else if !self.nodes.visited.set(nid) { + return; + } + + let node = self.nodes[nid].clone(); + match node.kind { + Kind::Start => self.emit_node(node.outputs[0], VOID), + Kind::End => {} + Kind::If => { + self.nodes[nid].ralloc_backref = self.nodes[prev].ralloc_backref; + + let &[_, cond] = node.inputs.as_slice() else { unreachable!() }; + let &[mut then, mut else_] = node.outputs.as_slice() else { unreachable!() }; + + if let Kind::BinOp { op } = self.nodes[cond].kind + && let Some((_, swapped)) = op.cond_op(node.ty.is_signed()) + { + if swapped { + std::mem::swap(&mut then, &mut else_); + } + let &[_, lhs, rhs] = self.nodes[cond].inputs.as_slice() else { unreachable!() }; + let ops = vec![self.urg(lhs), self.urg(rhs)]; + self.add_instr(nid, ops); + } else { + todo!() + } + + self.emit_node(then, nid); + self.emit_node(else_, nid); + } + Kind::Region | Kind::Loop => { + self.nodes[nid].ralloc_backref = self.add_block(nid); + if node.kind == Kind::Region { + for i in node.inputs { + self.bridge(i, nid); + } + } + let mut block = vec![]; + for ph in node.outputs.clone() { + if self.nodes[ph].kind != Kind::Phi { + continue; + } + self.def_nid(ph); + block.push(self.rg(ph)); + } + self.blocks[self.nodes[nid].ralloc_backref as usize].params = block; + for o in node.outputs.into_iter().rev() { + self.emit_node(o, nid); + } + } + Kind::Return => { + let ops = if node.inputs[1] != VOID { + vec![regalloc2::Operand::reg_fixed_use( + self.rg(node.inputs[1]), + regalloc2::PReg::new(1, regalloc2::RegClass::Int), + )] + } else { + vec![] + }; + self.add_instr(nid, ops); + self.emit_node(node.outputs[0], nid); + } + Kind::CInt { .. } => { + let ops = vec![self.drg(nid)]; + self.add_instr(nid, ops); + } + Kind::Phi => {} + Kind::Tuple { index } => { + let is_start = self.nodes[node.inputs[0]].kind == Kind::Start && index == 0; + if is_start || (self.nodes[node.inputs[0]].kind == Kind::If && index < 2) { + self.nodes[nid].ralloc_backref = self.add_block(nid); + self.bridge(prev, nid); + + if is_start { + let mut parama = self.tys.parama(self.sig.ret); + for (arg, ti) in self.nodes[VOID] + .clone() + .outputs + .into_iter() + .skip(1) + .zip(self.sig.args.range()) + { + let ty = self.tys.args[ti]; + match self.tys.size_of(ty) { + 0 => continue, + 1..=8 => { + self.def_nid(arg); + self.add_instr(NEVER, vec![regalloc2::Operand::reg_fixed_def( + self.rg(arg), + regalloc2::PReg::new( + parama.next() as _, + regalloc2::RegClass::Int, + ), + )]); + } + _ => todo!(), + } + } + } + + for o in node.outputs.into_iter().rev() { + self.emit_node(o, nid); + } + } else { + todo!(); + } + } + Kind::BinOp { op } => { + let &[_, lhs, rhs] = node.inputs.as_slice() else { unreachable!() }; + + let ops = if let Kind::CInt { .. } = self.nodes[rhs].kind + && op.imm_binop(node.ty.is_signed(), 8).is_some() + { + vec![self.drg(nid), self.urg(lhs)] + } else if op.binop(node.ty.is_signed(), 8).is_some() { + vec![self.drg(nid), self.urg(lhs), self.urg(rhs)] + } else if op.cond_op(node.ty.is_signed()).is_some() { + return; + } else { + todo!("{op}") + }; + self.add_instr(nid, ops); + } + Kind::UnOp { .. } => { + let ops = vec![self.drg(nid), self.urg(node.inputs[1])]; + self.add_instr(nid, ops); + } + Kind::Call { func } => { + self.nodes[nid].ralloc_backref = self.nodes[prev].ralloc_backref; + let mut ops = vec![]; + + let fuc = self.tys.funcs[func as usize].sig.unwrap(); + if self.tys.size_of(fuc.ret) != 0 { + self.def_nid(nid); + ops.push(regalloc2::Operand::reg_fixed_def( + self.rg(nid), + regalloc2::PReg::new(1, regalloc2::RegClass::Int), + )); + } + + let mut parama = self.tys.parama(fuc.ret); + for (&i, ti) in node.inputs[1..].iter().zip(fuc.args.range()) { + let ty = self.tys.args[ti]; + match self.tys.size_of(ty) { + 0 => continue, + 1..=8 => { + ops.push(regalloc2::Operand::reg_fixed_use( + self.rg(i), + regalloc2::PReg::new(parama.next() as _, regalloc2::RegClass::Int), + )); + } + _ => todo!(), + } + } + + self.add_instr(nid, ops); + + for o in node.outputs.into_iter().rev() { + if self.nodes[o].inputs[0] == nid { + self.emit_node(o, nid); + } + } + } + } + } + + fn bridge(&mut self, pred: u16, succ: u16) { + if self.nodes[pred].ralloc_backref == u16::MAX + || self.nodes[succ].ralloc_backref == u16::MAX + { + return; + } + self.blocks[self.nodes[pred].ralloc_backref as usize] + .succs + .push(regalloc2::Block::new(self.nodes[succ].ralloc_backref as usize)); + self.blocks[self.nodes[succ].ralloc_backref as usize] + .preds + .push(regalloc2::Block::new(self.nodes[pred].ralloc_backref as usize)); + } +} + +impl<'a> regalloc2::Function for Function<'a> { + fn num_insts(&self) -> usize { + self.instrs.len() + } + + fn num_blocks(&self) -> usize { + self.blocks.len() + } + + fn entry_block(&self) -> regalloc2::Block { + regalloc2::Block(0) + } + + fn block_insns(&self, block: regalloc2::Block) -> regalloc2::InstRange { + self.blocks[block.index()].instrs + } + + fn block_succs(&self, block: regalloc2::Block) -> impl Iterator { + self.blocks[block.index()].succs.iter().copied() + } + + fn block_preds(&self, block: regalloc2::Block) -> impl Iterator { + self.blocks[block.index()].preds.iter().copied() + } + + fn block_params(&self, block: regalloc2::Block) -> impl Iterator { + self.blocks[block.index()].params.iter().copied() + } + + fn is_ret(&self, insn: regalloc2::Inst) -> bool { + self.nodes[self.instrs[insn.index()].nid].kind == Kind::Return + } + + fn is_branch(&self, insn: regalloc2::Inst) -> bool { + matches!( + self.nodes[self.instrs[insn.index()].nid].kind, + Kind::If | Kind::Tuple { .. } | Kind::Loop | Kind::Region + ) + } + + fn branch_blockparams( + &self, + block: regalloc2::Block, + _insn: regalloc2::Inst, + _succ_idx: usize, + ) -> impl Iterator { + debug_assert!( + self.blocks[block.index()].succs.len() == 1 + || self.blocks[block.index()].branch_blockparams.is_empty() + ); + + self.blocks[block.index()].branch_blockparams.iter().copied() + } + + fn inst_operands(&self, insn: regalloc2::Inst) -> impl Iterator { + self.instrs[insn.index()].ops.iter().copied() + } + + fn inst_clobbers(&self, insn: regalloc2::Inst) -> regalloc2::PRegSet { + if matches!(self.nodes[self.instrs[insn.index()].nid].kind, Kind::Call { .. }) { + let mut set = regalloc2::PRegSet::default(); + for i in 2..12 { + set.add(regalloc2::PReg::new(i, regalloc2::RegClass::Int)); + } + set + } else { + regalloc2::PRegSet::default() + } + } + + fn num_vregs(&self) -> usize { + self.nodes.values.len() + } + + fn spillslot_size(&self, regclass: regalloc2::RegClass) -> usize { + match regclass { + regalloc2::RegClass::Int => 1, + regalloc2::RegClass::Float => unreachable!(), + regalloc2::RegClass::Vector => unreachable!(), + } + } +} + fn loop_depth(target: Nid, nodes: &mut Nodes) -> LoopDepth { if nodes[target].loop_depth != 0 { return nodes[target].loop_depth; @@ -2731,7 +2710,6 @@ mod tests { const README: &str = include_str!("../README.md"); fn generate(ident: &'static str, input: &'static str, output: &mut String) { - _ = env_logger::builder().is_test(true).try_init(); let mut codegen = super::Codegen { files: crate::test_parse_files(ident, input), ..Default::default() }; @@ -2756,7 +2734,7 @@ mod tests { return; } - println!("{output}"); + //println!("{output}"); crate::test_run_vm(&out, output); } diff --git a/ited: b/ited: deleted file mode 100644 index 40f0319..0000000 --- a/ited: +++ /dev/null @@ -1,2411 +0,0 @@ -commit 1c043b1687026a426611b75b0a7bbeb3279fef46 (HEAD -> trunk) -Author: mlokr -Date: Sun Sep 8 03:13:59 2024 +0200 - - if a phy does not depend of different phy in the same loop we can modify it in place saving a register copy - -commit 49387dbe16897c788751b5ad3f3318b6c81ab061 (origin/trunk, origin/HEAD) -Author: mlokr -Date: Sun Sep 8 03:12:57 2024 +0200 - - if a phy does not depend of different phy in the same loop we can modify it in place saving a register copy - -commit 803095c0c599abfb29cd6c3d71b39882efbc1c38 -Author: mlokr -Date: Fri Sep 6 22:00:23 2024 +0200 - - implementing multiple breaks - -commit 514c2fe630acfec5302a19d42cd9c248bf254045 -Author: mlokr -Date: Fri Sep 6 18:50:53 2024 +0200 - - ups - -commit b4f64656fe3d85fd26e7c1e6771f7fc4d6d21fa7 -Author: mlokr -Date: Fri Sep 6 18:50:28 2024 +0200 - - better error recovery - -commit 73e13bd93cefb7cc7a225f17d8149e04adff561d -Author: mlokr -Date: Fri Sep 6 16:16:42 2024 +0200 - - more tests work now - -commit b404e5b86dd628c4553c1f73e5c8b883e61d3e4b -Author: mlokr -Date: Fri Sep 6 16:11:57 2024 +0200 - - more tests work now - -commit 4bcab252315fbef9e77f705f815250b7c1f3eddc -Author: mlokr -Date: Fri Sep 6 02:42:07 2024 +0200 - - upgraded error messages and inference - -commit 414a07b99adc088ea2f11c85c114b622879121b6 -Author: mlokr -Date: Fri Sep 6 02:04:19 2024 +0200 - - great - -commit fdf4cccde09d8b84085f21d2e859e1c54ce681fa -Author: mlokr -Date: Fri Sep 6 01:17:54 2024 +0200 - - making a mess - -commit 1a3b0c2eec67fbb7200be04b8295f0107f2e74b4 -Author: mlokr -Date: Thu Sep 5 11:16:11 2024 +0200 - - implementing optimizations up to is statements - -commit 955e4a5c7a94c46b3ef8c26dddf67a88c502f96f -Author: mlokr -Date: Wed Sep 4 23:46:32 2024 +0200 - - making functions example pass - -commit d9aab2191b57d4c9fa5a57e70c38039e605ad741 -Author: mlokr -Date: Wed Sep 4 18:53:07 2024 +0200 - - maybe fixing a bug 2 - -commit 9dd09b21221a2d02bd658b6e9142c3d53b8b2034 -Author: mlokr -Date: Wed Sep 4 18:51:56 2024 +0200 - - maybe fixing a bug - -commit 937c107dec00d84a823f717f864139c4d1ac677d -Author: mlokr -Date: Wed Sep 4 18:48:25 2024 +0200 - - updating tests and fixing bug - -commit ed1b9459fcd15f84e0354c94544c78197b0ca1f3 -Author: mlokr -Date: Wed Sep 4 18:43:08 2024 +0200 - - some more - -commit f063d0a4fd2dfa6a42875be5b6b77ab1e4b05454 -Author: mlokr -Date: Wed Sep 4 18:38:32 2024 +0200 - - disasm now displays literal string value - -commit a21dee61e7a282472d091614ed8231703a6e9d35 -Author: mlokr -Date: Wed Sep 4 17:56:59 2024 +0200 - - adding disasm option - -commit 3807276a555a8e7a1f7df15c2df99cf7c03e72b9 -Author: mlokr -Date: Wed Sep 4 17:13:43 2024 +0200 - - fixing integer parsing bug - -commit 894f73ca35199f524dff6160c57c0916169fbaf6 -Author: mlokr -Date: Wed Sep 4 16:54:34 2024 +0200 - - adding more type checking - -commit 00ad4748811bb9b1159dee314482fdad92594fdc -Author: mlokr -Date: Wed Sep 4 02:35:09 2024 +0200 - - making tests more robust for no reason - -commit 9e0e0242aa7629b382ebb108fa7ba5e8ce24cf68 -Author: mlokr -Date: Tue Sep 3 22:41:44 2024 +0200 - - preparing for dead code elemination - -commit a31e02449c8e0a0023a1c78fb5896f679e6c4d3b -Author: mlokr -Date: Tue Sep 3 22:34:17 2024 +0200 - - adding disasembler - -commit b956cc78bb0e1f42c4f7597f64375b5b9bc73129 -Author: mlokr -Date: Tue Sep 3 17:51:28 2024 +0200 - - adding bfn to ast nodes - -commit 7279ed88e9f8c5c0bf11936215e3be9e8a9342c9 -Author: mlokr -Date: Tue Sep 3 00:27:50 2024 +0200 - - adding sime ignores - -commit 9500db876479f7b24d467a5da846ed63e54c4d11 -Author: mlokr -Date: Tue Sep 3 00:07:20 2024 +0200 - - some organization - -commit 9404eb32a2c09c7c7f6bc825ed2ea1b9bb21fb74 -Author: mlokr -Date: Mon Sep 2 13:28:07 2024 +0200 - - what - -commit f172c332478f54839ea8b3814883ffa7ac29b5b1 -Author: mlokr -Date: Mon Sep 2 04:45:42 2024 +0200 - - fixing nasety bug - -commit 75dca646483a584df7cae395d0fdc5c33f3e7294 -Author: mlokr -Date: Mon Sep 2 03:56:22 2024 +0200 - - popping the inlined function arguments - -commit 97c62e424aaf5a0d582727994c4eda8a87187104 -Author: mlokr -Date: Mon Sep 2 03:37:49 2024 +0200 - - fixing inconststent context for function - -commit a2c08b6ef6a272e4ec2ec8b0455153332dac156a -Author: mlokr -Date: Mon Sep 2 03:21:39 2024 +0200 - - fixing inlining related bugs - -commit a78d2bc3e92e35ae163d69bcf5dee8b4aeb3fc18 -Author: mlokr -Date: Mon Sep 2 02:45:03 2024 +0200 - - small fix - -commit ad3fc1190cd341908e397cc3c7d818ae6d57e20f -Author: mlokr -Date: Mon Sep 2 02:38:11 2024 +0200 - - uptimizing a bit more, inline calls - -commit 641be15703153386fef1a6b083a7e00c85414df9 -Author: mlokr -Date: Sun Sep 1 23:51:59 2024 +0200 - - most likely fixed - -commit cbe6f98dff9960e6b070173f35cf54434b0262f6 -Author: mlokr -Date: Sun Sep 1 23:14:48 2024 +0200 - - maybe fixed - -commit 9bdacfffb26d360ea4c400a620a8b95182d423b3 -Author: mlokr -Date: Sun Sep 1 22:08:17 2024 +0200 - - ups - -commit f13f500d6ee2e607f5ae7d9e2e19e563ce520e95 -Author: mlokr -Date: Sun Sep 1 22:07:45 2024 +0200 - - fixing minmaxing bug - -commit 4e9d6094bd28d563a3cd63d780fc0642bbfee9a9 -Merge: 28e33d1 581c4d5 -Author: mlokis -Date: Sun Sep 1 19:19:10 2024 +0000 - - Merge pull request 'Support Hex, Binary, and Octal number literals' (#20) from koniifer/holey-bytes:trunk into trunk - - Reviewed-on: https://git.ablecorp.us/AbleOS/holey-bytes/pulls/20 - -commit 28e33d11c9200b2be70db256f655ff29bbe3b55b -Author: mlokr -Date: Sun Sep 1 21:15:29 2024 +0200 - - removing garbage - -commit 581c4d531c83067d5d0aadf3a7c0129f2977f208 -Author: koniifer -Date: Sun Sep 1 20:07:19 2024 +0100 - - fix obvious bugs, add unit test, hopefully preserve radix when formatting - -commit 9012f976c5dcbc5c904462563529dc0e113d414a -Author: mlokr -Date: Sun Sep 1 21:05:17 2024 +0200 - - bruh - -commit 27462d9a335f91e5b9544ee03b01636737b3c9e8 -Author: koniifer -Date: Sun Sep 1 18:45:38 2024 +0100 - - forgot octals exist - -commit 781c40ede04ae9da9ca3029d712173ba816a74f0 -Author: koniifer -Date: Sun Sep 1 18:42:04 2024 +0100 - - support hex, octal, binary literals - -commit 9af7bf559f139937529ea7747cd275ed163fb1fa -Author: mlokr -Date: Sun Jul 21 10:29:58 2024 +0200 - - fixed confused shift tokens (I still dont know which side is left) - -commit 5a6474f06628d80386cdc4c09d443da9118ccfca -Author: mlokr -Date: Sat Jul 20 18:52:24 2024 +0200 - - fixed nasty wrong scope bug - -commit 33a4bf7d010029351fdb6e81bc31c02db646c704 -Author: mlokr -Date: Fri Jul 19 21:19:03 2024 +0200 - - barbar - -commit cac99cd34d99e09bc3d9608e870b770f13fe397b -Author: mlokr -Date: Fri Jul 19 21:04:22 2024 +0200 - - foobar - -commit 5555b9865a3ae9d512bc338c1f370aeca9975c60 -Author: mlokr -Date: Fri Jul 19 15:51:02 2024 +0200 - - v - -commit f964520641c141810425c5ab28c41c62b3187706 -Author: mlokr -Date: Fri Jul 19 14:39:30 2024 +0200 - - u - -commit a88d3a5c9deb964ce4d7172e1579110f8ebeb747 -Author: mlokr -Date: Fri Jul 19 14:24:58 2024 +0200 - - t - -commit 416f646957fe3f6cd0a971393d8c05204c05b95d -Author: mlokr -Date: Fri Jul 19 14:17:45 2024 +0200 - - s - -commit 12b39c5b3ff6d7b1e63ce935424e757174ec6252 -Author: mlokr -Date: Fri Jul 19 14:05:13 2024 +0200 - - q - -commit 4dcaae83629d3ab667bd8f52f29fdb08b3e88441 -Author: mlokr -Date: Fri Jul 19 13:51:38 2024 +0200 - - p - -commit ab903fa4eab4b2d24df6ac568baf7a52bc2de7b6 -Author: mlokr -Date: Fri Jul 19 13:44:35 2024 +0200 - - o - -commit c48a2d2799d59a1a94a694cf0e55ed2ea0b8ff25 -Author: mlokr -Date: Fri Jul 19 13:39:42 2024 +0200 - - l - -commit fb0140746543c811e51326cfeb061171e165962e -Author: mlokr -Date: Fri Jul 19 13:38:30 2024 +0200 - - k - -commit 71359d82aaa92e0dde3a011af06801a1e9696e6a -Author: mlokr -Date: Fri Jul 19 13:21:14 2024 +0200 - - j - -commit 29d5774c473d3fd751bce19d037fa00818cbb0df -Author: mlokr -Date: Fri Jul 19 13:09:45 2024 +0200 - - i - -commit 434acfbc7b2cae5481b861b09834ec8f326dd1c4 -Author: mlokr -Date: Fri Jul 19 13:09:07 2024 +0200 - - i - -commit 6a03f125a53c4bfc09631cf45c6841af98ccc7b7 -Author: mlokr -Date: Fri Jul 19 13:03:11 2024 +0200 - - h - -commit 03aedb5d3f57c2d05a510f91ae980dba7366db93 -Author: mlokr -Date: Fri Jul 19 13:02:00 2024 +0200 - - g - -commit a1179f332093e95dc008cf8364040dbdd3d720d9 -Author: mlokr -Date: Fri Jul 19 12:56:40 2024 +0200 - - f - -commit ba73a89171ef6f89d2b31383f96c933bfe9fb634 -Author: mlokr -Date: Fri Jul 19 12:52:11 2024 +0200 - - e - -commit 523ca6d1033d0f9be859537adc3f5d9c8234d277 -Author: mlokr -Date: Fri Jul 19 12:51:26 2024 +0200 - - d - -commit 654b7eb7af94c191a6ac9071e7efd56833966ad5 -Author: mlokr -Date: Fri Jul 19 12:42:06 2024 +0200 - - d - -commit 4c3b63df255f2ec0c19b828f65ae7ba14c76a95f -Author: mlokr -Date: Fri Jul 19 12:39:19 2024 +0200 - - c - -commit 9a8a56fe971f8ca6c7135462be192ace9568639d -Author: mlokr -Date: Fri Jul 19 12:34:22 2024 +0200 - - b - -commit aeb3a37f7dc9eab8322dd00f71d22f89b93b84c7 -Author: mlokr -Date: Fri Jul 19 12:00:55 2024 +0200 - - fixing typechecking issues, pointers now properly typecheck and generic types are properly cached - -commit 3c01a40ef258609769fe30a099af74451f87adbf -Author: mlokr -Date: Thu Jul 18 17:55:55 2024 +0200 - - fixing wide register returns - -commit 4f9d4f2e71b3818710bd6b72fc11fb6ad68dbc4f -Author: mlokr -Date: Mon Jul 8 18:08:58 2024 +0200 - - arrays work i guess - -commit 25bbe247e954b64c1d4a1231919167ee473626a9 -Author: mlokr -Date: Mon Jul 8 11:00:35 2024 +0200 - - added example for struct patters - -commit ab41d49a3d2d5f689de880faf5f7c21f54df6c38 -Author: mlokr -Date: Mon Jul 8 10:14:38 2024 +0200 - - some stuff - -commit 11cb875882200077619f720ea26417ea35ec5a6c -Author: mlokr -Date: Mon Jul 8 10:13:50 2024 +0200 - - some stuff - -commit 8984dce0e7d72be3624931a19e0e93ca712c9fe5 -Author: mlokr -Date: Mon Jul 8 07:44:06 2024 +0200 - - more dependencies removed - -commit fd64968f3ad481355b415238d0566e91c1a34758 -Author: mlokr -Date: Mon Jul 8 07:27:40 2024 +0200 - - more garbage - -commit e00f2f08c84197900ab365e551fe791cf06907a4 -Author: mlokr -Date: Mon Jul 8 07:22:53 2024 +0200 - - removing garbage - -commit 880cd66c6677cb5f8b87ea6a76b1385113b2767c -Author: mlokr -Date: Sun Jul 7 19:16:15 2024 +0200 - - on the journey twards struct destruct - -commit fa41c56cb3ed1fa8745a1fb790fa3f58707406e7 -Author: mlokr -Date: Sun Jul 7 18:21:07 2024 +0200 - - interstellar - -commit efa7271a5917c9b78ed06563df2bea13f895f8ca -Author: mlokr -Date: Sun Jul 7 14:52:31 2024 +0200 - - brahmaputra 4 - -commit bd7384123c63032711daf5fb0fc6ff428df859d0 -Author: mlokr -Date: Sun Jul 7 14:29:37 2024 +0200 - - brahmaputra 2 - -commit e9589ebcae580637f4237dc89cdd6b231867b85a -Author: mlokr -Date: Sun Jul 7 14:26:43 2024 +0200 - - brahmaputra - -commit 22f925b3f5c66c44172a4358fe7c08895a2f292f -Author: mlokr -Date: Sun Jul 7 13:44:20 2024 +0200 - - bruh - -commit 3807fe22daadc53efdb09f5b7a2e6884ae71ab70 -Author: mlokr -Date: Sun Jul 7 13:42:48 2024 +0200 - - YEEEEEEEEEEEEEEEEEEEEEEEEEEEES - -commit 12c7467be218e8008b2d5c8f748cabb47c874d69 -Author: mlokr -Date: Sun Jul 7 12:15:48 2024 +0200 - - removing string optimizations - -commit cdc8cb35f7d0e187883a87f283caab756208c55c -Author: mlokr -Date: Sat Jul 6 23:02:49 2024 +0200 - - GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH, I did not delete unwanted relocations - -commit 36bd1a796bc70b0842a065a7fc68e0479f0e40c4 -Author: mlokr -Date: Sat Jul 6 23:02:04 2024 +0200 - - GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH, I did not delete unwanted relocations - -commit 59705c062dbd0eeeaf2feb4a76230a393672c646 -Author: mlokr -Date: Sat Jul 6 15:18:57 2024 +0200 - - adding better api - -commit 9fe734c68c954274d17e959a3d0e29e58a5345a1 -Author: mlokr -Date: Sat Jul 6 15:05:56 2024 +0200 - - adding better api - -commit dc0562553ddf81da0d649a318d5181b87d17621a -Author: mlokr -Date: Sat Jul 6 14:58:50 2024 +0200 - - adding better api - -commit 91907a90ff2312526278d11d4d76bc3afbf3ff8b -Author: mlokr -Date: Tue Jul 2 14:49:05 2024 +0200 - - -__- - -commit e147358fce9b1ee7230a0a50e6f8fa3556bcbec0 -Author: mlokr -Date: Tue Jun 25 21:51:41 2024 +0200 - - adding spart fmt to struct ctors - -commit f9e46b4641d0505ace19fbc431d53ec358909f97 -Author: mlokr -Date: Tue Jun 25 21:41:12 2024 +0200 - - added formatting - -commit 93deeee6b99aa02392c18048016c8d3b02515fd2 -Author: mlokr -Date: Tue Jun 25 19:55:25 2024 +0200 - - adding comments - -commit 876690319fa83cfad1166d981bc998399d501bb2 -Author: mlokr -Date: Tue Jun 25 19:46:48 2024 +0200 - - slight improvement - -commit c835317287c40c65396f5dc8ced53d8f5dcea9ae -Author: mlokr -Date: Tue Jun 25 19:22:49 2024 +0200 - - slight improvement - -commit 8442b55aa6e3dd197f3aa14aa2bed8ea22a98946 -Author: mlokr -Date: Tue Jun 25 19:13:42 2024 +0200 - - improved exer - -commit e07265c88ba639946c96ca931d5e9a30b54462b7 -Author: mlokr -Date: Tue Jun 25 19:12:35 2024 +0200 - - improved exer - -commit 6a69042cb701e29516e18c2e08b170e935bad167 -Author: mlokr -Date: Tue Jun 25 18:39:59 2024 +0200 - - improved exer - -commit c85437e4e8299e68ac567dee3e11ef38fc192d72 -Author: mlokr -Date: Mon Jun 24 17:45:58 2024 +0200 - - fixed a significant bugus - -commit 76b3f9ff4be69c04f3e786d220cf56c7ad373364 -Author: mlokr -Date: Mon Jun 24 17:26:00 2024 +0200 - - pekomaaaaa - -commit 66c3f7b0d42604bdbebaf68a22020c5d5c7c4275 -Author: mlokr -Date: Sun Jun 23 13:55:48 2024 +0200 - - cleanup - -commit b04d9e517e87fbaa25dabdaec6070cba53d9a8b4 -Author: mlokr -Date: Sun Jun 23 09:26:03 2024 +0200 - - tests pass again - -commit b46c64db4faf8ed6dbcd8f8b03fe40dcd92be608 -Author: mlokr -Date: Sun Jun 23 09:09:33 2024 +0200 - - tests pass again - -commit 6de8496aa5e367fcac4c2a1d0a9c8e5b1c4d3f68 -Author: mlokr -Date: Fri Jun 21 23:07:32 2024 +0200 - - whew - -commit 499fe34f1d8a8391b1d420e778e28dcf9b2866dc -Merge: 20903ef 36d978d -Author: mlokr -Date: Thu Jun 20 11:23:37 2024 +0200 - - psl - -commit 36d978d7981908bd03ab373d6439f6d2a5457dde -Author: mlokr -Date: Thu Jun 20 11:18:36 2024 +0200 - - cleaning up the docs - -commit bd2a49d29a9f34549df6cd736b2ae2c3bf95cfb2 -Author: mlokr -Date: Sat Jun 15 10:49:02 2024 +0200 - - brah - -commit 1c8645bf11d74fa8c70c46db05a9f9a0c9aaa2cd -Author: mlokr -Date: Sat Jun 15 10:48:42 2024 +0200 - - fixing pre - -commit 1624559e7b4522ce28a935e24a3d5c04b197a1c8 -Author: mlokr -Date: Sat Jun 15 10:46:53 2024 +0200 - - little guide to add examples - -commit 1ca5d896443551204d147d97f6a5a0092486f80a -Author: mlokr -Date: Sat Jun 15 10:38:16 2024 +0200 - - pup - -commit 61ecbbd304a7dad35e1fd7ce1979aeac027e10fb -Author: mlokr -Date: Sat Jun 15 10:37:50 2024 +0200 - - putting tests as examples in readme - -commit 002a7df5091db3c04190e6ece2707a300deaf260 -Author: mlokr -Date: Sat Jun 15 09:37:19 2024 +0200 - - adding more elaborate directive example - -commit 20903ef2948b6294597cccb999028028a3d2db61 -Author: mlokr -Date: Wed Jun 12 16:29:41 2024 +0200 - - smh my head - -commit aafcb2fbbdabc77aff350021d94c0ea7843978c9 -Author: mlokr -Date: Thu Jun 6 15:39:10 2024 +0200 - - size improvement - -commit 98862edd58be781068f37221328265256c9c60be -Author: mlokr -Date: Sat Jun 1 20:30:07 2024 +0200 - - other stuff - -commit b9de362ba24988cbf428fe62e34717051b3b1c34 -Author: mlokr -Date: Sat Jun 1 20:29:35 2024 +0200 - - making modules work - -commit e494785f93dad2722ebd9e5d81c2bcb3c471cc07 -Author: mlokr -Date: Mon May 20 14:11:58 2024 +0200 - - some stuff - -commit aef9951bc50c078677063cc1b5fc9b4824a0feca -Author: mlokr -Date: Sun May 19 18:20:42 2024 +0200 - - implementing comptime constants - -commit b922dbd2329525ff461f64fef978a1154e682c90 -Author: mlokr -Date: Fri May 17 19:53:59 2024 +0200 - - making progress on parallelization - -commit 71c4d3632a044ff74b423179f103c1518faf1f57 -Author: mlokr -Date: Thu May 16 22:56:53 2024 +0200 - - welp that was an accident - -commit 8cb9f2eaac76f445a17a39cf40b6c3f59f083347 -Author: mlokr -Date: Thu May 16 16:54:12 2024 +0200 - - fixing stack to what compiler assumes - -commit aae217dd00cc5ce1b7fc221947e5f62379ed78f8 -Author: mlokr -Date: Thu May 16 16:50:29 2024 +0200 - - making better use of parameter and return registers (use register 2 for arguments when possible) - -commit 4502a645140354b365b39f38d3f56249ee776ae3 -Author: mlokr -Date: Thu May 16 13:32:04 2024 +0200 - - some cleanup and bug fix - -commit ca1d471646d39dc925faa00b8500691db4b5a9b6 -Author: mlokr -Date: Thu May 16 13:29:16 2024 +0200 - - adding imm operations is come cases - -commit 2dff9f7244cfcf5d4a58f0defb343fd6febf4442 -Author: mlokr -Date: Thu May 16 12:56:33 2024 +0200 - - slightly optimizing assignment - -commit 3127d04e41ac4c325d843094752ca5fac4489d98 -Author: mlokr -Date: Thu May 16 12:42:11 2024 +0200 - - doing same for arguments - -commit 589a30c8a3fa9de3a0bb74dd35c0979408077574 -Author: mlokr -Date: Thu May 16 12:23:37 2024 +0200 - - making the variables smarter (only putting then on stack when they get referenced) - -commit 8b81cfef3729118798ca25787ff5afb070c83844 -Author: mlokr -Date: Wed May 15 14:39:36 2024 +0200 - - cargo update - -commit 6b74640c3fdc29d40aaa04faff31cff9acaa5b08 -Author: mlokr -Date: Wed May 15 14:37:03 2024 +0200 - - accident - -commit 87ba7aa2030bdeb251259a8b9d13287f0a0e8560 -Author: mlokr -Date: Wed May 15 14:36:38 2024 +0200 - - removing deendence on macros with a simple build script - -commit 78f9eb6acc35319b2cbf8e029132b44cab7518e9 -Author: mlokr -Date: Wed May 15 11:10:20 2024 +0200 - - implementing codegen for all the operators - -commit 3c09a5f23e2b1c8fa979bfa405387c8cae64cfe5 -Author: mlokr -Date: Wed May 15 10:37:39 2024 +0200 - - adding '=' syntax - -commit 70955c1792791070a34c82b904213aa84e572242 -Author: mlokr -Date: Tue May 14 23:07:32 2024 +0200 - - adding directives - -commit d8a922df264a6bbb292bbb33d48062d7a36d96b5 -Author: mlokr -Date: Tue May 14 15:03:36 2024 +0200 - - painfully, but suddle bugs with pointers are now fixed - -commit 9aa5da82c941fb21a31ececd85b105a66556a137 -Author: mlokr -Date: Tue May 14 14:01:40 2024 +0200 - - saving before refactoring experiment - -commit fb481a060076a9085b2cadc508743baac02605a6 -Author: mlokr -Date: Tue May 14 12:17:39 2024 +0200 - - making stack reclamation - -commit d90f386bd2253d64f867c3c826fba881f67fb1e9 -Author: mlokr -Date: Mon May 13 15:27:09 2024 +0200 - - adding an edge case - -commit c14e6c352d309a11416155fe48fd3f81f42d3c24 -Author: mlokr -Date: Mon May 13 15:24:48 2024 +0200 - - fixing upcating bugs related to pointers - -commit 9ccf91d0724fcd8bcf56297d1eaa766e01edeeea -Author: mlokr -Date: Mon May 13 14:23:19 2024 +0200 - - adding pointer arithmetic test - -commit 7cca9a368395696f83c86dad507bdf12de3d21dc -Author: mlokr -Date: Mon May 13 13:36:29 2024 +0200 - - adding different-sized integers - -commit b28baa86f793737c8e2e76e6d00e04dcb090252e -Author: mlokr -Date: Mon May 13 11:05:35 2024 +0200 - - adding destination semantics for expressions - -commit 2226a47aaab7e200d57dc9cf8820d90a1f95ad94 -Author: mlokr -Date: Mon May 13 09:55:09 2024 +0200 - - fixing struct regurns - -commit 0aec47e985eb52094203da6a6b35c96d11c03494 -Author: mlokr -Date: Mon May 13 09:38:33 2024 +0200 - - fixing struct regurns - -commit 5c38115119b4ebb2f82575c4b71a267342fd41f3 -Author: mlokr -Date: Mon May 13 00:02:32 2024 +0200 - - adding simple cli - -commit c3cbd054f753473c19c12049593f7901b5e4f051 -Author: mlokr -Date: Sun May 12 23:45:28 2024 +0200 - - improving code - -commit 06e30529bf7a8804bf74532e05f934bcfa85a0cf -Author: mlokr -Date: Sun May 12 23:19:45 2024 +0200 - - added better error reports - -commit 4ec635dc56572bcf8b9ad5cba5f7c1b4f98d0ccc -Author: mlokr -Date: Sun May 12 22:40:28 2024 +0200 - - proper type display and pointer types - -commit a08856a464a93da3dfee77956dfc7dc65c037e0b -Author: mlokr -Date: Sun May 12 20:14:46 2024 +0200 - - fising spec - -commit d5a5c932e7b2b28511c65737a53c466ce96323ea -Author: mlokr -Date: Sun May 12 20:10:50 2024 +0200 - - finishing structures - -commit bc598864289b942b1ebe13d025c4299a32d4c536 -Author: mlokr -Date: Sun May 12 14:56:59 2024 +0200 - - adding per function dead code elimination - -commit f87959aacba2348255c0c073dc1f1a65474c5421 -Author: mlokr -Date: Sun May 12 13:13:36 2024 +0200 - - adding structures - -commit 80b05779ea40f98450f795e8badbfcb06512897c -Author: mlokr -Date: Sun May 12 12:21:40 2024 +0200 - - adding struct syntax - -commit 4bb5ec1953aadf4c27c7503459323defab7bdde9 -Author: mlokr -Date: Sun May 12 12:16:40 2024 +0200 - - adding struct syntax - -commit 2aa315a86309d8a6927d6eb52ca7594fecc43d14 -Author: mlokr -Date: Sun May 12 11:53:21 2024 +0200 - - accident - -commit 86013a50a43d196adba0af5857504452716b58b6 -Author: mlokr -Date: Sun May 12 11:52:58 2024 +0200 - - identifiers are now properly checked - -commit 465b185452de3633d181eab83a7751b031dfa878 -Author: mlokr -Date: Sat May 11 22:23:58 2024 +0200 - - foo bar - -commit b794fa7c3caa664156364bae8cb0b9fdcd08fd94 -Author: mlokr -Date: Sat May 11 22:22:08 2024 +0200 - - foo bar - -commit ebefc855669d743c0ede5b69c259c598c820cce2 -Author: able -Date: Sat May 11 15:21:07 2024 -0500 - - :3 Breaky - -commit a3c4b878b2fe2475260d4acd0b97627eb81acf8c -Author: mlokr -Date: Sat May 11 18:16:27 2024 +0200 - - adding loops - -commit 7f32e7775c44522d7988cf6226365162ca22e724 -Author: mlokr -Date: Sat May 11 17:05:22 2024 +0200 - - making if statements without else branch work - -commit 1d74f27b0ec6279a705af5d46832acf2bfb93821 -Author: mlokr -Date: Sat May 11 16:04:13 2024 +0200 - - making the functions kind of walk - -commit 7435218999af438ed7a5a8061ba669ae2b851f31 -Author: mlokr -Date: Sat May 11 12:51:32 2024 +0200 - - fixing relative jumps to not offset from immidiate adress but from instruction adress - -commit cf99091a4545aedfd4734bf57448a32e8cee7dca -Author: mlokr -Date: Fri May 10 22:54:12 2024 +0200 - - now compiling some trivial arithmetic - -commit 81952cfc4035b9456834fcad394d178696598e85 -Author: mlokr -Date: Fri May 10 21:38:15 2024 +0200 - - compiling return stmt - -commit 68d53544fd384462656e2964344a98e4dd0c506b -Author: mlokr -Date: Fri May 10 21:33:42 2024 +0200 - - compiling return stmt - -commit aa77a2f82273dbe84d3ccf41bbf252ddac1ac453 -Author: mlokr -Date: Fri May 10 15:29:11 2024 +0200 - - fixing JALA and JAL saving self reference instead of reference to the next instruction - -commit b80528bfd78666b494b54e8b1575f2385700023d -Author: mlokr -Date: Thu May 9 23:43:18 2024 +0200 - - accident - -commit 1c08148dc91e47cde5d1fa19cc88dc0b7c59389f -Author: mlokr -Date: Thu May 9 23:41:59 2024 +0200 - - starting from zero again - -commit 774735b515d3b917d5304bcb5ff7ac751024d23b -Author: mlokr -Date: Thu May 9 18:24:30 2024 +0200 - - ups - -commit 870c1f47188f79f1befe5565d5e37418b22fb5d9 -Author: mlokr -Date: Thu May 9 18:22:31 2024 +0200 - - blah - -commit 326adf47ce02d521e41b6012baf798d5a7411301 -Author: mlokr -Date: Thu May 9 18:16:01 2024 +0200 - - wha - -commit 37ff58c5e55fbb0924674d509905048be80f3aba -Author: able -Date: Mon Apr 29 05:02:33 2024 -0500 - - Removing old deprecated things. - -commit cbf4c6572a50fc190ca4e534a9ff625ba6471a9d -Author: Erin -Date: Tue Apr 16 15:34:12 2024 +0200 - - fixed hbasm - -commit 0070016f74fc21606375bda56b78d3997251fea5 -Author: Erin -Date: Thu Feb 22 23:57:29 2024 +0100 - - Documented hbasm - -commit 6c6e29479fef4b4c38db8cb55092a6de4536326f -Author: Erin -Date: Fri Feb 16 12:17:15 2024 +0100 - - xyzzy - -commit eb46b24a107934120b304f5068b4e9daf96c28d0 -Author: Erin -Date: Fri Feb 16 11:49:32 2024 +0100 - - xyzzy - -commit 942839a5f8226898d94129437c31b60daa970d8e -Author: Erin -Date: Fri Feb 16 11:45:39 2024 +0100 - - xyzzy - -commit 9ddc336ecd5028966a583b892a9993848528f684 -Author: mlokr -Date: Wed Feb 14 11:45:58 2024 +0100 - - fixing deprecated stuff, i hate this - -commit 34d1bf415e9de5053f5f546c153438811e41fa2d -Author: Erin -Date: Wed Feb 14 01:25:44 2024 +0100 - - Don't fail to compile on unsupported architectures - -commit c978b408e291ace10cb290d984e0b34668b27866 -Author: mlokr -Date: Tue Feb 13 15:54:46 2024 +0100 - - running cargo updtae to fix the broken build on nightly - -commit fe9a0667b879ef28327782e54047c029576c9fcd -Author: Erin -Date: Sun Feb 4 22:36:52 2024 +0100 - - Maybe fixed questionable code - -commit 975ce8a9fe0c755212c8798137109998111f8290 -Author: mlokr -Date: Sun Feb 4 18:32:55 2024 +0100 - - more - -commit 8a3dd3001d1b6d20c4170015459de59b9d761a42 -Author: mlokr -Date: Sun Feb 4 10:34:16 2024 +0100 - - smh - -commit de723980dacf87540c7fc701a531957e9061f97b -Author: Erin -Date: Sun Feb 4 03:08:20 2024 +0100 - - The more macros, the merrier - -commit 4aa39f3fbc150824b75208f24262e0b93fedc661 -Author: Erin -Date: Sun Feb 4 02:46:50 2024 +0100 - - a - -commit 5f8864e251453231fd91298c7c757da2b6566afc -Author: Erin -Date: Sun Feb 4 02:21:14 2024 +0100 - - Fixed stack allocation for debug - -commit bcbe47bcd67e9340c654a83e4675f8c98945e485 -Author: mlokr -Date: Sat Feb 3 21:43:30 2024 +0100 - - some more progress on codegen - -commit 30ee6c84fc70475c69334319e1b496efb69720f6 -Author: Erin -Date: Sat Feb 3 20:08:09 2024 +0100 - - Fixed x86 asm - -commit 6e464be33d214f2802bcfa7f97d9d5f19152b9c3 -Author: mlokr -Date: Thu Feb 1 16:11:10 2024 +0100 - - adding more parsing with a sanity test - -commit 09aacff161e0927acb0f72526f9bb3ee4cb9baae -Author: mlokr -Date: Wed Jan 31 20:11:57 2024 +0100 - - establishing some syntax - -commit 433f2db4d1dace1e4b00305ac9ec7945db321873 -Author: mlokr -Date: Wed Jan 31 17:54:38 2024 +0100 - - fixing some warnings - -commit e335e55aa0b784669aaed9aae502f486f812fdb2 -Author: mlokr -Date: Wed Jan 31 16:47:17 2024 +0100 - - removing useles import, super important change - -commit 8e0aeabc079346930c9d92352c9587880554a281 -Author: Erin -Date: Mon Jan 15 17:59:46 2024 +0100 - - Baka baka Erin, when you decode RRB, you have to bump it by RRB! - -commit a84e93d562ba5586a89e078f8d718f27d8920d83 -Author: Erin -Date: Mon Jan 15 17:51:08 2024 +0100 - - idk - -commit 8374dfe20a1f161e6cd543357ca88e48746ef5a7 -Author: Erin -Date: Sun Jan 7 00:34:28 2024 +0100 - - Changed macro param - -commit e9e12427430a48022182043ed95ccf289a19029e -Author: Erin -Date: Tue Dec 19 12:36:54 2023 +0100 - - Fixed another typo - -commit f604a2463d5b10980853e945528b24f31ff26647 -Author: Erin -Date: Wed Nov 29 21:07:16 2023 +0100 - - Fixed typo - -commit 59e38db874dea4e0be94fb28133fddfa1c3dcd03 -Author: Erin -Date: Sun Nov 26 04:13:52 2023 +0100 - - Whoops. - -commit 8c257e921612273f5ece0015aa850c72a0f9b60b -Author: Erin -Date: Sun Nov 26 04:13:30 2023 +0100 - - More general runtime - -commit 84cc1db691483d0c9a4435012fbd8105edf623f2 -Author: Erin -Date: Fri Nov 24 12:30:20 2023 +0100 - - Added fuzzer back - -commit 633e3adc617580b8e2ee15589f9f27a792d61ab7 -Author: Erin -Date: Fri Nov 24 01:09:15 2023 +0100 - - Add basic Win32 support - -commit 7f981fe9a04ec6e30a877e8dc3f4d9f3e33a5c65 -Author: Erin -Date: Thu Nov 23 22:10:44 2023 +0000 - - It was not a typo, baka Erin. - -commit 43c36774a560959d7445585143b44ac4c59968e7 -Author: Erin -Date: Thu Nov 23 22:10:23 2023 +0000 - - Fixed typo in spec (thanks Ity ^^) - -commit 5dd0e22c0d1a85d90d0babda284d36cad3f950bb -Author: Erin -Date: Thu Nov 23 17:35:11 2023 +0100 - - Moved module - -commit b161d46a5beb120da69d156b386d971a894754a6 -Author: Erin -Date: Thu Nov 23 16:25:06 2023 +0100 - - Changed docs a bit - -commit 42488e1e4a38b32c5cc2bbf49964c30d2808e811 -Author: Erin -Date: Wed Nov 15 19:17:25 2023 +0100 - - Added stack hopefully maybe who knows - -commit b84ff7001406e5e465dc443898791d1768a65e68 -Author: Erin -Date: Wed Nov 15 19:03:56 2023 +0100 - - funny thing - -commit b8432d544c517d6516d24227d9f820a75ca1a525 -Author: Erin -Date: Wed Nov 15 18:23:43 2023 +0100 - - Baka baka Erin, do not forget to bump the opcode too! - -commit 207d8d7fa637f2dcb357bb9aa7a3f73f04fab46d -Author: Erin -Date: Wed Nov 15 18:11:29 2023 +0100 - - Bye file merged already into spec.md - -commit 569f154bcc344fc71f30401655cbacaaf04c61bd -Author: Erin -Date: Wed Nov 15 12:45:40 2023 +0100 - - Changed psABI spec - -commit 68094ce0ae6a9c9e65566de0c8283991015fce7b -Merge: d255967 84dcbfc -Author: Erin -Date: Wed Nov 15 11:26:39 2023 +0000 - - Merge pull request 'The best kind of pull request' (#17) from bee/holey-bytes:master into trunk - - Reviewed-on: https://git.ablecorp.us/AbleOS/holey-bytes/pulls/17 - -commit 84dcbfc6bb74fc082832e965b3e5421a1683d3c9 -Author: Bee -Date: Tue Nov 14 01:46:40 2023 -0500 - - Fixed typo - -commit d26c285ca765fd2a73a68c0cbb15b5504bdf11b7 -Merge: d6ea5ad d255967 -Author: bee -Date: Tue Nov 14 06:42:33 2023 +0000 - - Merge pull request 'Gooby' (#2) from AbleOS/holey-bytes:trunk into master - - Reviewed-on: https://git.ablecorp.us/bee/holey-bytes/pulls/2 - -commit d25596712569a77903a05fbca67d363cab62d9e9 -Author: Erin -Date: Mon Nov 13 00:21:12 2023 +0100 - - Ehm? - -commit c5c8d23470be6bb85c80c85967ba230c47e9a197 -Author: Erin -Date: Mon Nov 13 00:12:18 2023 +0100 - - Fixed immediate ops - -commit aca8045a987715d836235ebfcc06d39269937bc3 -Author: Erin -Date: Fri Nov 10 09:51:01 2023 +0100 - - Fixed assembler register symbols - -commit 398687d8bf9b0868a090e0244a0e2eb4a85765e1 -Author: Erin -Date: Wed Nov 8 12:38:14 2023 +0100 - - Fixed some panics and some UB - -commit a7c4379976c7b60261224130f35e10724154a0b9 -Author: Erin -Date: Fri Nov 3 09:49:42 2023 +0100 - - »fixed« fuzzer - -commit 949dd3ba6190bcf7ac667eec7057d89d7cd41e9f -Author: Erin -Date: Fri Nov 3 09:43:08 2023 +0100 - - Fixed rounding mode - -commit 37711809096a3d9297fca23b609b4bd3515da18b -Author: Erin -Date: Fri Nov 3 09:19:41 2023 +0100 - - more fmt - -commit 6b3a132451b7693660ab9b5223ae17f9920f3dc9 -Author: Erin -Date: Fri Nov 3 09:01:26 2023 +0100 - - fmt - -commit b45d235312c5402581c418bab42f12e1820995ad -Author: Erin -Date: Thu Nov 2 19:53:03 2023 +0100 - - Exit - -commit 9ee3e9cb5f4587e9f7bf2c8e197f79b197553fc5 -Author: Erin -Date: Thu Nov 2 16:53:44 2023 +0100 - - Public accessors - -commit 57f30109c8d5ccd3945076b2e86ed6d9add47ea1 -Author: Erin -Date: Sun Oct 29 20:38:57 2023 +0100 - - Fixed smaller units - -commit d6243fa99f8076c18a5d94360f4cf7318d17e967 -Author: Erin -Date: Sat Oct 28 03:29:02 2023 +0200 - - Squashed assembler - -commit 3a6d0fdd2d0dd38cbb329f48655493d76dbe7baf -Author: Erin -Date: Sun Oct 22 23:59:27 2023 +0200 - - fixed match - -commit 9b823ef66047bbcbef33a32c16481536a1b09285 -Author: Erin -Date: Sun Oct 22 18:44:08 2023 +0200 - - Untypo'd - -commit 84aeac0b2af53cce1b6c26ab4cf2e2d1c7e5bcd6 -Author: Erin -Date: Sun Oct 22 18:43:44 2023 +0200 - - Hints of ABI - -commit fc4118938e235be286523d5f0607dfe5dd4b5232 -Author: Erin -Date: Sun Oct 22 18:36:32 2023 +0200 - - Spec update - -commit cb557d136102bd743ca74264d2f492cce8ffaf08 -Author: Erin -Date: Sun Oct 22 18:18:50 2023 +0200 - - Updated spec! - -commit 2715bc9107f378940837b6ca4ac15a91aa1920cc -Author: Erin -Date: Sun Oct 22 16:17:51 2023 +0200 - - Some fmt - -commit 8182abca980149f35a5ce35fa40f75bd9ac6f516 -Author: Erin -Date: Sun Oct 22 15:08:45 2023 +0200 - - Added assembler - - - its a bit cursed, prolly broken, but at least something - -commit 83563fff84b392d0110205081d30c3f8dc69da24 -Author: Erin -Date: Sun Oct 22 14:46:45 2023 +0200 - - Maybe fixed relative addressing bugs - -commit b4923cfb953b203412f25823b2c5dbf4338b7730 -Author: Erin -Date: Sun Oct 22 04:21:45 2023 +0200 - - Removed UB - -commit eab47db4d6aae10f2e3c0dba97a283d906e1dde4 -Author: Erin -Date: Fri Oct 20 12:35:45 2023 +0200 - - chore: cargo update - -commit 4b45407a70e9032b5431c700a5027af66f6de0e5 -Author: Erin -Date: Fri Oct 20 02:05:00 2023 +0200 - - Added test example - -commit a944a145ed6b16ac25eb692b6de409ad297cd7ec -Author: Erin -Date: Fri Oct 20 00:42:45 2023 +0200 - - relative JAL - -commit 0e701e31b5cd266f58b1b7dd4666aad52bee0e04 -Author: Erin -Date: Fri Oct 20 00:12:32 2023 +0200 - - Updated runtime stuff - -commit 0cb20d5727b83ca6685cc6d49200ff42f849e0e2 -Author: Erin -Date: Wed Oct 18 12:14:24 2023 +0200 - - New float instructions, Linux runtime added, some other stuff I forgor - -commit 889aefe87adb57129d958ff999d17e9ddd322c71 -Author: Erin -Date: Sun Oct 1 16:02:06 2023 +0200 - - Changed relative addressing - -commit 59be9068359d86edd7de7dd696d28a6ec7006300 -Author: Erin -Date: Sun Oct 1 01:52:26 2023 +0200 - - Sus2 - -commit 441356b6f290d9af9d98f996787c42ee6f19df5c -Author: Erin -Date: Sun Oct 1 01:51:51 2023 +0200 - - Sus stuff - -commit 2f8612c6d2a5ae138ec7f70ddbea533db637ca00 -Author: Erin -Date: Fri Sep 29 09:10:36 2023 +0200 - - Added relaxed relative 16 bit instructions - -commit 3e4095da6f0496994af8bd36652d66c3176c2f99 -Author: Erin -Date: Tue Sep 26 23:36:27 2023 +0200 - - Lottsa things changed - -commit b1bdbea991e3a898ca13b48ba0e74e84a263edc9 -Author: Erin -Date: Sat Sep 16 01:02:14 2023 +0200 - - JMP - -commit 8c8c708279bdfb68364bc6021d72768df82338bb -Author: Erin -Date: Sat Sep 16 00:57:37 2023 +0200 - - JMP impl - -commit 35f90e94a87a639904db7848f6da22227c6c2848 -Author: Erin -Date: Fri Sep 15 08:42:56 2023 +0200 - - Changed CMP handling and added simple JMP - -commit e7aa306e5d182fa05c53d3e513a6b09f48a9c6a0 -Author: able -Date: Tue Sep 12 01:38:32 2023 -0500 - - examples - -commit 42be580425a76e5ce53de85544706b3af556e765 -Author: Erin -Date: Fri Sep 8 10:46:41 2023 +0200 - - ABI proposal part 1 - -commit 9b8a4a718e3468823016945a3f1aaccd9f5d7207 -Author: Erin -Date: Sun Aug 20 00:24:27 2023 +0200 - - a - -commit 0d2949024c9061ed935ae93fd64b70c5e0b61c3d -Author: Erin -Date: Sat Aug 19 23:57:48 2023 +0200 - - updated macro - -commit 26105bab70f61a0622eedf60304eab6041a9e552 -Author: Erin -Date: Sat Aug 19 23:46:47 2023 +0200 - - bye stuff - -commit 006dcca309c5e7c640b6be7d647effab8da2fdba -Author: Erin -Date: Sat Aug 19 23:24:31 2023 +0200 - - cleaned up deps - -commit 3034469e89089b8ce7dc62cc2a5e3af6be863a14 -Author: Erin -Date: Fri Aug 18 02:31:49 2023 +0200 - - Address type, changed behaviour on address overflow - -commit 30070818ae8b76c63c6c3f76963b18bf8a2ef049 -Author: Erin -Date: Fri Aug 18 01:41:05 2023 +0200 - - Move - -commit d282b3d111e75413a47fabf6166288e6c5d06307 -Author: Erin -Date: Fri Aug 18 01:28:02 2023 +0200 - - Softpage improvements - -commit 600528434be52e383d280b9376709459724f2234 -Author: Erin -Date: Thu Aug 17 01:37:53 2023 +0200 - - nope. - -commit 0deeaf3a7e09ef460273155c6f30cabf6995d16a -Author: Erin -Date: Tue Aug 15 17:21:55 2023 +0200 - - SPID - -commit 3decd01619f241e79d48aa4f6bf7b2ce485abe7f -Author: Erin -Date: Tue Aug 15 17:05:10 2023 +0200 - - Modified memory interface - - I have no idea what I am doing rn - -commit a071a4a7ae472cb2e3414093ea61ada18bd6c133 -Author: Erin -Date: Tue Aug 15 16:33:56 2023 +0200 - - Notice - -commit af1a7d3bfab2453a2f300e4b1ed04cf430998def -Author: Erin -Date: Tue Aug 15 16:32:59 2023 +0200 - - Move stuff, deprecate softpage - -commit 3fdf936f77e60c54c4957682541a379e0b75d02a -Merge: e2d3f46 96b7490 -Author: Erin -Date: Fri Aug 11 02:19:26 2023 +0200 - - Some merges - -commit 96b749060d9ecb3a270e851d21e6122c4b457a1f -Author: Erin -Date: Thu Aug 10 12:39:18 2023 +0200 - - h - -commit 770c2ebcf0cd64330ef34a4daf631936fe6b4db4 -Author: Erin -Date: Thu Aug 10 12:39:03 2023 +0200 - - move - -commit 6609bd10c5d4b901e8facabe48c7fb30b80cc40f -Author: Erin -Date: Wed Aug 9 20:19:12 2023 +0200 - - executable - -commit 97eaae1c764fee8c8927e80d191047d9d600a6d6 -Author: Erin -Date: Wed Aug 9 03:12:09 2023 +0200 - - bai - -commit 1460a7a23075297ae463aa48e32615af7b83eea6 -Author: Erin -Date: Wed Aug 9 03:01:42 2023 +0200 - - Edit 0x0 - -commit 529fbdaed45402c76a6a0bd484070bb930760816 -Author: Erin -Date: Wed Aug 9 02:59:11 2023 +0200 - - Comments - -commit 3ac80a2e3d513c2ea9c1cf35a3e16b6f29a19817 -Author: Erin -Date: Wed Aug 9 02:57:25 2023 +0200 - - Forbid store - -commit 06d66289bc7159db656c8526473c7dea594634e8 -Author: Erin -Date: Wed Aug 9 02:53:55 2023 +0200 - - Now finally, leaving Hardvard! - -commit 430ccd170dc9d06e96c636fc628d2e5afd7970c9 -Author: Erin -Date: Wed Aug 9 02:33:03 2023 +0200 - - Von-Neumann? - -commit e2d3f46d3ff57016332dcbc4f97f09bc7fd80fd1 -Merge: d74b32a eadf9e0 -Author: Erin -Date: Wed Aug 9 01:24:45 2023 +0200 - - Added TX instruction (definitely not named after Texas) - -commit eadf9e0a1fc29ae43d69ee13b917973333bc99ce -Author: Erin -Date: Wed Aug 9 01:24:13 2023 +0200 - - Termination instruction - -commit d74b32a38d5ab8018659eb7bb44f6e48b56883e9 -Merge: 8287b1b 4530ff0 -Author: Erin -Date: Tue Aug 8 03:14:19 2023 +0200 - - Changed memory interfacing - -commit 4530ff049e3acc128ec5e933d417569f071d8541 -Author: Erin -Date: Tue Aug 8 03:10:23 2023 +0200 - - fmt - -commit 2d2978eec70f767370aefebe069db100d8d7f74a -Author: Erin -Date: Tue Aug 8 03:10:11 2023 +0200 - - Added inner memory access - -commit bf50bcb2035c64976db23fd3eededc2640bddb5a -Author: Erin -Date: Tue Aug 8 03:03:15 2023 +0200 - - Changed stuff aroud - -commit 82f23ec2e2decf960ae5d1052ec1010c558d532b -Author: Erin -Date: Tue Aug 8 02:48:47 2023 +0200 - - Abstraction of memory - -commit 5264576274e4228c0a927d7eb7d2d5905effbdbf -Author: Erin -Date: Tue Aug 8 02:06:15 2023 +0200 - - Reimplemented BMC - -commit cdee99598ebcbe7764cd85e7efaacda57d608423 -Author: Erin -Date: Tue Aug 8 01:44:33 2023 +0200 - - const perm check - -commit f130a27685e701ca615a3fdf143ee2934c0ff9df -Author: Erin -Date: Mon Aug 7 01:50:21 2023 +0200 - - Shrunk - -commit aa186b35c25e9c888efc7b7a7f43668041bb5603 -Author: Erin -Date: Mon Aug 7 01:43:29 2023 +0200 - - Spec update - -commit 629fc969c29a872d2c5fa7bbba181a380d4e32ad -Author: Erin -Date: Mon Aug 7 01:41:26 2023 +0200 - - Spec update - -commit 8287b1bdc1b1af7d6cba79c246ca3c2562449b16 -Author: Erin -Date: Tue Aug 1 22:20:11 2023 +0200 - - Changed magic - -commit 73b998911ce9188c9c47cf0b2125eda704603243 -Author: Erin -Date: Tue Aug 1 22:17:20 2023 +0200 - - a - -commit 1a5f101719b9dd57f131f09f8c8022db4bf270f3 -Author: Erin -Date: Tue Aug 1 22:13:22 2023 +0200 - - Added magic - -commit a667c36d6cde27cb24fca9e7a7e6030ae050c898 -Author: Erin -Date: Wed Jul 26 21:23:03 2023 +0200 - - Link fix - -commit 582c7164451cf22131fe205e4e75cac8c928f23d -Author: Erin -Date: Wed Jul 26 20:54:24 2023 +0200 - - Nightly opts - -commit 37a1923f1e74ab4c77c3a1f8d41941b0e4add05f -Author: Erin -Date: Wed Jul 26 20:49:23 2023 +0200 - - Added some comments - -commit 10f9907c09c0f1c224ee48ffcc80f4c523690488 -Author: Erin -Date: Wed Jul 26 13:04:58 2023 +0200 - - Fixed mapping problems - -commit 2480a659475a1a6003f0130ab5dc3a067b16d081 -Author: Erin -Date: Wed Jul 26 12:41:18 2023 +0200 - - Whoops, this is 5-level paging, not 6-level paging - -commit 1ed153a9a2fe44afe8deafef8e9ed5a4cf4c134e -Author: Erin -Date: Wed Jul 26 12:22:28 2023 +0200 - - Fixed memory (un)mapping - -commit 19df4538d78e8759dd9ee77e039918a6452e9be3 -Author: Erin -Date: Wed Jul 26 03:27:31 2023 +0200 - - Fixed page size, fuzzer now does memory. - -commit e07bfb2301c5cadd2b17c822f6c3337df6200212 -Author: Erin -Date: Wed Jul 26 02:35:27 2023 +0200 - - Decreased timeout - -commit cfe3203ef1b8ff526f0f51c0c15d7469e74c2226 -Author: Erin -Date: Wed Jul 26 02:31:06 2023 +0200 - - Increased timeout - -commit c4e062e742db8a2d5454a91907f4b6e7069d4ccc -Author: Erin -Date: Wed Jul 26 02:30:22 2023 +0200 - - Increased timeout - -commit 83436507dfaa36613b15deed0be9f0dbb25648c3 -Author: Erin -Date: Wed Jul 26 02:28:14 2023 +0200 - - Fixed few overflows - -commit bdda987da9db132fd64aad60ca99e9ff94fbf37e -Author: Erin -Date: Wed Jul 26 02:04:26 2023 +0200 - - BMC is now interruptable - -commit 65888377694451f9fd79ed1f690a2f17ab8d0e16 -Author: Erin -Date: Wed Jul 26 01:11:21 2023 +0200 - - restruct + no-alloc support - -commit f2ec9a3034862ab502e2c29ecfd110be2f457e29 -Author: Erin -Date: Wed Jul 26 01:01:53 2023 +0200 - - Added fuzzy tests - -commit 95c979cb83c5eef01016a602f92ecca1b9747bf9 -Author: Erin -Date: Wed Jul 26 00:17:10 2023 +0200 - - a - -commit 66f634a70fb8e651039b4d41ec3b67199aa242cf -Author: Erin -Date: Wed Jul 26 00:16:50 2023 +0200 - - Added warning - -commit 077da50787871a38e5f865f142a643355763d693 -Author: Erin -Date: Wed Jul 26 00:12:50 2023 +0200 - - Reworked macros - -commit 5055626968d5fc19f81e1391216b411edd3348f3 -Author: Erin -Date: Wed Jul 26 00:01:25 2023 +0200 - - Added runtime bound checking - -commit 0f5d78bb27d5748ea1da6ab17e2ce3f792ead503 -Author: Erin -Date: Tue Jul 25 23:48:59 2023 +0200 - - whoops, fixed builds. - -commit 668b324cc88dced28c1905ff006fa006c9481975 -Author: Erin -Date: Tue Jul 25 23:47:51 2023 +0200 - - Valider - -commit 759514686aacde377ee3f8b394bda2d02f1c4aa4 -Author: Erin -Date: Tue Jul 25 23:43:06 2023 +0200 - - Valider is now generated from macro (not done yet) - -commit 92793dc93b069b26139bb2d89aadbaf0b40dc8f6 -Author: Erin -Date: Tue Jul 25 23:03:06 2023 +0200 - - Quick valider fix - -commit ac149a5319cbeefe7ab15780c4cb751ba3e88190 -Author: Erin -Date: Tue Jul 25 22:44:08 2023 +0200 - - Commented valider - -commit f4c55ae3cc9b62e34f19a3108d5854917d2bcf05 -Author: able -Date: Tue Jul 25 12:20:35 2023 -0500 - - changes I GUESS - -commit a82686ec074a0d75cd18c808c84878eb340bd9c9 -Author: Erin -Date: Tue Jul 25 19:10:00 2023 +0200 - - Fixed endian stuffs - -commit b3a6c42af343ef0c8c871e0f07e5d32586a269fd -Author: Erin -Date: Tue Jul 25 14:41:54 2023 +0200 - - Added notice - -commit d20447dd15d82f186f6f3efe5a8bd54157548c0f -Author: Erin -Date: Mon Jul 24 20:41:10 2023 +0200 - - Kekw - -commit 193be0bd5ad8a04d7f212c8baca57f8626c33d40 -Author: Erin -Date: Mon Jul 24 18:48:42 2023 +0200 - - Removed some macros - -commit fce3fa5210fb5b343725cee23408976bee0a8f04 -Author: Erin -Date: Mon Jul 24 16:48:13 2023 +0200 - - fixed imm shl/r - -commit 4ca4e81ac3c66feeaa229d0f4d45b57715ab7638 -Author: Erin -Date: Mon Jul 24 16:37:37 2023 +0200 - - Fixed panic on shift outta bounds - - - Pointed out by 5225225 - -commit dcfd51999d2b5675ff18d4f8b9384c13c600c687 -Author: Erin -Date: Sat Jul 22 02:42:43 2023 +0200 - - Fixed missing / - -commit 1532c501a6ab2a8b685212fbdc89d56ce9b274f8 -Author: Erin -Date: Sat Jul 22 02:42:21 2023 +0200 - - added contribution guide to instructions - -commit 8eebbacb91b6a9522d9621073cd1cd08b707080e -Author: Erin -Date: Sat Jul 22 02:34:41 2023 +0200 - - Name correction - -commit c621a5c71d7e91fd4901256fdea5a200c1e8d94a -Author: Erin -Date: Sat Jul 22 02:29:05 2023 +0200 - - Edits. - -commit 8d5d22eae19b710cf1c0f9719059ff66ae2b769c -Author: Erin -Date: Sat Jul 22 02:28:05 2023 +0200 - - Moved lore - -commit 3892a719eb941532c54d83a3ac15203deca7bbcd -Author: Erin -Date: Sat Jul 22 02:27:03 2023 +0200 - - A - -commit 47323e140c5bf8c151347353aa474ae0d84318fe -Author: Erin -Date: Sat Jul 22 02:26:29 2023 +0200 - - added notice. - -commit 3833beb17db06b4844edb0a4649493055e5e2e34 -Author: Erin -Date: Sat Jul 22 02:26:03 2023 +0200 - - More comments - -commit afbf6dd2e41cba429c2d376167a126d5fe051293 -Author: Erin -Date: Sat Jul 22 01:06:41 2023 +0200 - - Removed pagetable hack - -commit ec7053a2898047fd7879d808234eca01bc41cdc1 -Author: Erin -Date: Sat Jul 22 01:03:09 2023 +0200 - - Zero alloc BMC! - -commit 1a53c80a621b60de5cc3b8ebdf1f9640bcfe2451 -Author: Erin -Date: Sat Jul 22 00:46:30 2023 +0200 - - Fixed bug + spec update - -commit 6fe1fd91bf78a9e3421e9c9a591e13aed9694bb6 -Author: Erin -Date: Thu Jul 20 20:47:50 2023 +0200 - - Mapping + bye bye memory leaks - -commit ac7fdc7688032d5001cba454f9d7ca4a9e786cfd -Author: able -Date: Sat Jul 15 06:27:11 2023 -0500 - - code and stufd - -commit 9cf8789e9a4b6ebc66814bc2a766bd27c73379bb -Merge: 3534b26 a21f68f -Author: able -Date: Thu Jul 13 04:23:06 2023 -0500 - - Merge branch 'master' of ssh://git.ablecorp.us:20/AbleOS/holey-bytes - -commit 3534b26946fd321b58a3e4cefb443336f97e9611 -Author: able -Date: Thu Jul 13 04:23:00 2023 -0500 - - Add some example code for hbasm - -commit a21f68ffa6701400fe7a347b92dc71286fbd1ba5 -Merge: 446225b 7833334 -Author: Erin -Date: Thu Jul 13 09:13:34 2023 +0000 - - Merge pull request 'Added UN instruction and fixed UB' (#7) from fix-ub into master - - Reviewed-on: https://git.ablecorp.us/AbleOS/holey-bytes/pulls/7 - -commit 78333347132672bb7f9ba87ddcdec0306f9fdb07 -Author: Erin -Date: Thu Jul 13 11:11:35 2023 +0200 - - Update spec - -commit 141c5f524f19f8afdbcc9d6cfb0e7e7fd6558d8a -Author: Erin -Date: Thu Jul 13 11:05:41 2023 +0200 - - Added UN instruction and fixed UB - -commit 446225bcf6e00d32e435541edc534db8c10161b9 -Merge: beb6e23 d6ea5ad -Author: Erin -Date: Thu Jul 13 09:09:44 2023 +0000 - - Merge pull request 'Fixed the number of registers BRC copies' (#6) from bee/holey-bytes:master into master - - Reviewed-on: https://git.ablecorp.us/AbleOS/holey-bytes/pulls/6 - -commit d6ea5adf49c04de8da82d833f68ac75384752baa -Merge: 898738f beb6e23 -Author: bee -Date: Wed Jul 12 17:13:38 2023 +0000 - - Merge pull request 'merge' (#1) from AbleOS/holey-bytes:master into master - - Reviewed-on: https://git.ablecorp.us/bee/holey-bytes/pulls/1 - -commit 898738fb40704883ea30b731b504e4c756882328 -Author: Egggggg -Date: Wed Jul 12 13:12:00 2023 -0400 - - fixed the number of registers BRC copies - -commit beb6e23d716e16fa8e9cb577d60cd094775b7de7 -Author: Erin -Date: Wed Jul 12 14:56:11 2023 +0200 - - Map APIs - -commit 5afd081c2a43a5f959aae336c66ea30fbbc0891f -Author: Egggggg -Date: Wed Jul 12 06:50:07 2023 -0400 - - hehe oops - -commit 81cf5c43363beaeef31d1b4923816f0915d1532c -Author: Erin -Date: Wed Jul 12 12:45:50 2023 +0200 - - JMP → JAL + spec fix - -commit 63cf7ac0b0e65770433d4ce6ee1a05868668a807 -Author: Egggggg -Date: Wed Jul 12 06:25:38 2023 -0400 - - fixed argument order of BMC and BRC - -commit 3cb3ee1feea96a02841c87ce5ed1361839c0ee5d -Author: Erin -Date: Wed Jul 12 02:24:05 2023 +0200 - - fixxed lint - -commit 4dfbe939199d2664920b667903272e98f306bc54 -Author: Erin -Date: Wed Jul 12 02:23:47 2023 +0200 - - special-cased BRC - -commit 6791b6d48e2d896ce58d439ce1255ed5935c3c87 -Author: Erin -Date: Wed Jul 12 02:16:23 2023 +0200 - - Rewritten assembler - -commit 0ed89234a753618bb3f84d75f2c3528cd3341c49 -Author: Erin -Date: Tue Jul 11 17:04:48 2023 +0200 - - Revised trap API - -commit 6afec2a031eb6f183f725c9a8009244b61903374 -Merge: 9196519 b83d183 -Author: able -Date: Tue Jul 11 09:36:39 2023 +0000 - - Merge pull request 'master' (#3) from IntoTheNight/holey-bytes:master into master - - Reviewed-on: https://git.ablecorp.us/AbleOS/holey-bytes/pulls/3 - -commit b83d1838aa142746c81f3b7ce1d509a47721d67c -Merge: e25a89d 9196519 -Author: IntoTheNight -Date: Tue Jul 11 09:28:48 2023 +0000 - - Merge pull request 'master' (#1) from AbleOS/holey-bytes:master into master - - Reviewed-on: https://git.ablecorp.us/IntoTheNight/holey-bytes/pulls/1 - -commit e25a89d56dc0b5cefd0d1efbc8295ddcd18dc697 -Author: MunirG05 -Date: Tue Jul 11 14:54:49 2023 +0530 - - the design is very human - -commit b72f0afe8412308d55d3a2a12e33d783a235f629 -Author: MunirG05 -Date: Tue Jul 11 14:38:20 2023 +0530 - - add fancy errors - -commit 9196519fae726b6b477a0878f1eced6559759fd0 -Author: Erin -Date: Tue Jul 11 10:33:55 2023 +0200 - - doc - -commit 6759fbd2abd3b09224f603f3dab06ef0157a0480 -Author: MunirG05 -Date: Tue Jul 11 14:03:25 2023 +0530 - - tried to shove the timer back in - -commit 4f53fb1c875a9cd406b475c56b101f3e7f13e3b3 -Author: Erin -Date: Tue Jul 11 10:32:26 2023 +0200 - - Moved - -commit ad96e83f095ac4667566fe2c59dbe0af2ed0c016 -Author: Erin -Date: Tue Jul 11 10:31:03 2023 +0200 - - wrap around timer - -commit 5ee8a914798cb4a2291405dbf22f7b4b81c11e8d -Author: Erin -Date: Tue Jul 11 10:29:23 2023 +0200 - - Implement timer - -commit bde00c13f283c07c66bc75c4024b05aa09f212a4 -Author: Erin -Date: Tue Jul 11 02:08:55 2023 +0200 - - Improved assembler library - -commit b4dac1245be889fcda37cab0989e1848ba0909be -Author: Erin -Date: Mon Jul 10 23:18:23 2023 +0200 - - Moved - -commit e700010e7f03203c677efbde667dea5d53edc923 -Author: Erin -Date: Fri Jul 7 15:23:53 2023 +0200 - - Rename - -commit 2d34ed61d028305cc7dc7ecc9f7885b89d6992e6 -Author: Erin -Date: Fri Jul 7 15:22:03 2023 +0200 - - Updated flots - -commit 3919aa810010b4f562cb419aac32ca0cb14edc59 -Author: Erin -Date: Fri Jul 7 14:36:40 2023 +0200 - - assert char bit - -commit a548a7b08e1a3f72f7c925218b42badb31618c61 -Author: Erin -Date: Fri Jul 7 14:32:46 2023 +0200 - - Updated C header - -commit 132fc1a6ed6d154abc5df24bc1402b3f365d3b4a -Author: Erin -Date: Fri Jul 7 14:28:12 2023 +0200 - - Updated spec - -commit c31c9e9a54d310a59929ff8ac631d36100201785 -Author: able -Date: Mon Jun 26 05:23:52 2023 -0500 - - HBASM: derp forgot that deps also need to be nostd - -commit c26b5598981c860fbde7377ba1be66f414c705e7 -Author: able -Date: Mon Jun 26 05:18:14 2023 -0500 - - HBASM: no_std compatible now - -commit 907dd66d5e32ba8029a263343939d66e2a9e3cc0 -Author: Erin -Date: Sun Jun 25 00:28:20 2023 +0200 - - Improved unhandled trap handling - -commit 2416526014664dbcde87713ddc6af026d16f7a92 -Author: Erin -Date: Sun Jun 25 00:21:40 2023 +0200 - - Stole docs - -commit bb50c095387f9c7fa74282e1215a15274181086b -Author: Erin -Date: Sun Jun 25 00:18:31 2023 +0200 - - docs - -commit a7cf5e4847b2a29fb7a101adce7c7a0778ef0036 -Author: Erin -Date: Sun Jun 25 00:16:14 2023 +0200 - - Implemented traps - -commit 87ec6ded54c713995c27439c5a15dd79dd66ac2e -Author: able -Date: Wed Jun 21 08:22:56 2023 -0500 - - Initial work on a simple serial driver for ableos - -commit 4a840a6ef012896ff81632b881acddff1c8c906e -Author: able -Date: Wed Jun 21 08:22:21 2023 -0500 - - Update to stable - -commit 5ec6da9fb448b50074871da8bf122dc777b72ce2 -Author: able -Date: Wed Jun 21 07:54:10 2023 -0500 - - clear out assets - -commit fdca041e6b5abf6e605d1e027568d708f407c451 -Author: able -Date: Wed Jun 21 07:53:01 2023 -0500 - - NIX: fix nix-shell - -commit 06b11847720f605cce57b401a0c546ef1c6ab75e -Author: Erin -Date: Wed Jun 21 02:07:48 2023 +0200 - - HoleyBytes, almost adhering the spec - - - Changed instruction encoding to be faster to match on - - Implemented all instructions defined in spec - - Bytecode validation - - Assembler - - Implemented 5 level paging (based on SV57) - - Implemented some degree of interrupts (though not fully adhering the spec yet) - -commit fb78e0a44a9d4cd2ae18888b408247fa17f32ada -Author: Erin -Date: Sun May 28 23:38:26 2023 +0200 - - a - -commit 7eaa01f53c53b605f81a62dffd688c339bfb0f20 -Author: Erin -Date: Sun May 28 23:37:43 2023 +0200 - - fixup32 - -commit 119ce4405f437e9a6a52861e52a9c30b3f70b40f -Author: Erin -Date: Sun May 28 16:49:01 2023 +0200 - - Changed register handling - -commit eb3edea2e746bdd002f9f3b2df153caabcc6df2a -Author: able -Date: Thu May 25 07:51:40 2023 -0500 - - CLEANUP: IDK if what is here works tbh glhf I'm sleepy - -commit f990f05c4c13e7d6b083a0390d816408f73dbcbb -Author: able -Date: Wed May 24 08:07:29 2023 -0500 - - Begin work on a revamped HBVM - -commit 4223055c0cbcbb1136b4f3a59f21ecacd7f0bcd0 -Author: able -Date: Tue May 23 02:29:31 2023 -0500 - - minor changes and a bug fix - -commit e53a5eb83526c9c37972aa7c8d3fac32447edc79 -Author: able -Date: Mon May 22 23:44:40 2023 -0500 - - More test cases - -commit 49a45d62c6f7b7cfe96fe70c25f026587bd8e0c0 -Author: able -Date: Mon May 22 22:47:29 2023 -0500 - - add in test cases - -commit e3277e99a70d22fac3af6a3139e417b600e42bb7 -Author: able -Date: Mon May 22 09:03:52 2023 -0500 - - Attempt to support nix shell - -commit c7828a49406ee6c6813505d8d524c068a41f360f -Author: able -Date: Mon May 22 09:01:13 2023 -0500 - - Adding a couple of tests - -commit 76302b4ca8aeda6597ee51cb1cf5f59a5d385c4f -Author: Able -Date: Tue May 9 03:47:21 2023 -0500 - - I'm a genus - -commit 15c3ce1f69da36146ff3a10de797eb48b42ab786 -Author: Able -Date: Tue May 9 03:36:37 2023 -0500 - - rework architecture and add a "compiler" - -commit b2870bf2b074701f5f4fd756de4c73d3735c7b93 -Author: Able -Date: Sat May 6 07:50:29 2023 -0500 - - update environ call - -commit 1e47b6242f64213aefe20daada1855c13acb20b7 -Author: Able -Date: Sat May 6 07:35:20 2023 -0500 - - all caps - -commit 5909b8e520b180e88357ef1fa712aa51ad4141e3 -Author: Able -Date: Sat May 6 07:33:40 2023 -0500 - - beetp - -commit 46eb4c17a002e975dc48cf480ab89a832162b71d -Author: Able -Date: Sat Apr 22 17:47:01 2023 -0500 - - bizare page unmapped error - -commit 7d8b0bae78509d1808548dd5dcf2abba56dce7cc -Author: Able -Date: Sat Apr 22 17:17:49 2023 -0500 - - Implement address decoding - -commit 35b2baf0a4135f8da25dcd2550dfea5a2a40152d -Author: Able -Date: Sat Apr 22 16:06:33 2023 -0500 - - adding in environ calls - -commit 685ddbbe74266c23f42b3eb73781899eff6384aa -Author: Able -Date: Sat Apr 22 14:32:41 2023 -0500 - - minor change - -commit fef23d0f93e83371f6b809b71de7a91e3117b7d4 -Author: Able -Date: Sat Apr 22 13:00:19 2023 -0500 - - Update - -commit 28958d0810560dfd3ff289596a173457677289d4 -Author: Able -Date: Tue Apr 18 21:41:27 2023 -0500 - - restructure - -commit fb2c859db14aed40ac3538fb40b936cbb3f6b502 -Author: Able -Date: Tue Apr 18 18:08:30 2023 -0500 - - commit - -commit 1bf49eafe1b15bf94e488f7b280dee067b064527 -Author: Able -Date: Mon Apr 17 07:31:18 2023 -0500 - - Initial commit