diff --git a/src/execute.rs b/src/execute.rs index 707f390..7564096 100644 --- a/src/execute.rs +++ b/src/execute.rs @@ -70,6 +70,7 @@ pub fn execute(stack: &mut Stack, mut origin_stack: Option<&mut Stack>, mod_name "dup" => instructions::stack_manage::dup(&mut stack.memory), "swap" => instructions::stack_manage::swap(&mut stack.memory), "pick" => instructions::stack_manage::pick(&mut stack.memory, instruction.data), + "string" => instructions::stack_manage::string(&mut stack.memory, instruction.arg.clone()), // Math operations "add" => instructions::math::add(&mut stack.memory), diff --git a/src/instructions/stack_manage.rs b/src/instructions/stack_manage.rs index a9201cf..6fce61b 100644 --- a/src/instructions/stack_manage.rs +++ b/src/instructions/stack_manage.rs @@ -34,3 +34,11 @@ pub fn pick(memory: &mut StackVec, data: u16) { .expect(&format!("{}", RunError::PickOutOfBounds)), ); } + +pub fn string(memory: &mut StackVec, arg: String) { + for i in arg.chars() { + memory.push(i as u16); + } + + memory.push(arg.len() as u16); +}