From a182852068f60a946792069a4549aef76304e9b0 Mon Sep 17 00:00:00 2001 From: Xearty Date: Sat, 4 Feb 2023 21:46:20 +0200 Subject: [PATCH 1/2] Change the byte type to uint8_t --- spasm/src/asm/bytecode.hpp | 2 +- spasm/src/types.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spasm/src/asm/bytecode.hpp b/spasm/src/asm/bytecode.hpp index bc7f93b7..b8afb622 100644 --- a/spasm/src/asm/bytecode.hpp +++ b/spasm/src/asm/bytecode.hpp @@ -13,7 +13,7 @@ namespace ASM class Bytecode_Stream { public: - typedef int8_t byte; + typedef uint8_t byte; typedef byte Opcode_t; virtual ~Bytecode_Stream(); diff --git a/spasm/src/types.hpp b/spasm/src/types.hpp index a5d45d8d..ab50254f 100644 --- a/spasm/src/types.hpp +++ b/spasm/src/types.hpp @@ -9,7 +9,7 @@ namespace SpasmImpl { -typedef int8_t byte; +typedef uint8_t byte; typedef size_t PC_t; typedef Spasm::Value data_t; From 2fcd4247bfb0c970544e30fc9c348a05b851f96f Mon Sep 17 00:00:00 2001 From: Xearty Date: Sat, 4 Feb 2023 23:00:28 +0200 Subject: [PATCH 2/2] Read integer as signed when it's one byte --- JSImpl/test/sprtTests.cpp | 10 +++++----- spasm/src/spasm.cpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/JSImpl/test/sprtTests.cpp b/JSImpl/test/sprtTests.cpp index 25b7665b..74a6f0b2 100644 --- a/JSImpl/test/sprtTests.cpp +++ b/JSImpl/test/sprtTests.cpp @@ -277,12 +277,12 @@ TEST_F(SPRTTest, Call) OpCodes::PushFrom, 4, // 20 OpCodes::Call, 25, // 22 OpCodes::Print, 4, // 24 - OpCodes::Halt, // 25 + OpCodes::Halt, // 25 OpCodes::Print, 0, // 27 - OpCodes::Print, -1, // 29 - OpCodes::Print, -2, // 31 - OpCodes::Mul, 1, -2, -1,// 33 - OpCodes::Ret, 1, // 35 + OpCodes::Print, Spasm::byte(-1), // 29 + OpCodes::Print, Spasm::byte(-2), // 31 + OpCodes::Mul, 1, Spasm::byte(-2), Spasm::byte(-1), // 33 + OpCodes::Ret, 1, // 35 }; Run(bytecode, sizeof(bytecode)); diff --git a/spasm/src/spasm.cpp b/spasm/src/spasm.cpp index dab81b99..b1c5969a 100644 --- a/spasm/src/spasm.cpp +++ b/spasm/src/spasm.cpp @@ -480,7 +480,7 @@ int64_t Spasm::read_integer(size_t size) switch (size) { case 0: - return m_ByteCode[m_PC++]; + return *reinterpret_cast(&m_ByteCode[m_PC++]); case 1: { auto result = *reinterpret_cast(&m_ByteCode[0] + m_PC);