forked from MightyPork/crsn
remove unnecessary cloning of SourcePosition, reduce SourcePosition size. clean, format
This commit is contained in:
@@ -2,16 +2,16 @@ use std::ops::Rem;
|
||||
|
||||
use num_traits::PrimInt;
|
||||
|
||||
use crsn::asm::data::{Rd, Wr};
|
||||
use crsn::asm::instr::Cond;
|
||||
use crsn::module::{EvalRes, OpTrait};
|
||||
use crsn::runtime::fault::Fault;
|
||||
use crsn::runtime::run_thread::{state::RunState, ThreadInfo};
|
||||
use crsn::sexp;
|
||||
use crsn::sexp::Sexp;
|
||||
use crsn::utils::A;
|
||||
|
||||
use crate::defs::ArithOp;
|
||||
use crsn::sexp::Sexp;
|
||||
use crsn::sexp;
|
||||
use crsn::utils::A;
|
||||
use crsn::asm::data::{Rd, Wr};
|
||||
|
||||
impl OpTrait for ArithOp {
|
||||
fn execute(&self, _ti: &ThreadInfo, state: &mut RunState) -> Result<EvalRes, Fault> {
|
||||
@@ -238,7 +238,7 @@ impl OpTrait for ArithOp {
|
||||
}
|
||||
}
|
||||
|
||||
fn to_sexp_2_or_3(name: &str, dst : &Wr, a: &Rd, b: &Rd) -> Sexp {
|
||||
fn to_sexp_2_or_3(name: &str, dst: &Wr, a: &Rd, b: &Rd) -> Sexp {
|
||||
if &dst.as_rd() == a {
|
||||
sexp::list(&[A(name), A(dst), A(b)])
|
||||
} else {
|
||||
|
||||
@@ -22,7 +22,7 @@ impl CrsnExtension for ArithOps {
|
||||
"arith"
|
||||
}
|
||||
|
||||
fn parse_op<'a>(&self, pos: SourcePosition, keyword: &str, args: TokenParser<'a>) -> Result<ParseRes<'a, OpKind>, CrsnError> {
|
||||
fn parse_op<'a>(&self, pos: &SourcePosition, keyword: &str, args: TokenParser<'a>) -> Result<ParseRes<'a, OpKind>, CrsnError> {
|
||||
parse::parse(pos, keyword, args)
|
||||
}
|
||||
}
|
||||
|
||||
+18
-18
@@ -3,11 +3,11 @@ use crsn::asm::error::CrsnError;
|
||||
use crsn::asm::instr::op::OpKind;
|
||||
use crsn::asm::parse::arg_parser::TokenParser;
|
||||
use crsn::module::ParseRes;
|
||||
|
||||
use crate::defs::ArithOp;
|
||||
use crsn::sexp::SourcePosition;
|
||||
|
||||
pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParser<'a>) -> Result<ParseRes<'a, OpKind>, CrsnError> {
|
||||
use crate::defs::ArithOp;
|
||||
|
||||
pub(crate) fn parse<'a>(pos: &SourcePosition, keyword: &str, mut args: TokenParser<'a>) -> Result<ParseRes<'a, OpKind>, CrsnError> {
|
||||
Ok(ParseRes::ext(match keyword {
|
||||
"cmp" => {
|
||||
ArithOp::Compare {
|
||||
@@ -57,7 +57,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Add requires 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Add requires 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Sub requires 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Sub requires 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,7 +103,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Mul requires 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Mul requires 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -130,7 +130,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("DivR requires 3 or 4 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("DivR requires 3 or 4 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -156,7 +156,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Div requires 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Div requires 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -180,7 +180,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Mod requires 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Mod requires 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -203,7 +203,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("And requires 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("And requires 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -226,7 +226,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Or requires 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Or requires 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -249,7 +249,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Xor requires 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Xor requires 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -270,7 +270,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Cpl requires 1 or 2 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Cpl requires 1 or 2 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -301,7 +301,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Rol requires 1, 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Rol requires 1, 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -332,7 +332,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Ror requires 1, 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Ror requires 1, 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -363,7 +363,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Lsl requires 1, 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Lsl requires 1, 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -394,7 +394,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Lsr requires 1, 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Lsr requires 1, 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -425,7 +425,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
return Err(CrsnError::Parse("Asr requires 1, 2 or 3 arguments".into(), pos));
|
||||
return Err(CrsnError::Parse("Asr requires 1, 2 or 3 arguments".into(), pos.clone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user