From 065df34eb1986c679ae1d7aa3c89d158c39888fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?b=CA=B0edoh=E2=82=82=20sw=C3=A9?= Date: Mon, 17 Jun 2024 17:48:53 +0500 Subject: [PATCH] Add "string" command --- src/execute.rs | 1 + src/instructions/stack_manage.rs | 8 ++++++++ 2 files changed, 9 insertions(+) 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); +}