Website Summary Files Commits Branches @commit @diff @stats
path: root / spasm / src / asm / bytecode.cpp
diff options
context:
space:
mode:
1 files changed, 20 insertions, 20 deletions
-rw-r--r--spasm/src/asm/bytecode.cpp40
diff --git a/spasm/src/asm/bytecode.cpp b/spasm/src/asm/bytecode.cpp
index 39f1de6..ad436ce 100644
--- a/spasm/src/asm/bytecode.cpp
+++ b/spasm/src/asm/bytecode.cpp
@@ -26,17 +26,17 @@ void Bytecode_File::push_opcode(Bytecode_Stream::Opcode_t opcode)
push_byte(opcode);
}
-void Bytecode_File::push_integer(int number)
+void Bytecode_File::push_integer(int number, int size)
{
- if (number <= 0xff)
- {
- push_byte((byte)number);
- }
- else
- {
- for (size_t i = 0; i < sizeof(int); ++i)
- push_byte((number >> (i << 3)) & 0xff);
- }
+ for (int i = 0; i < size; ++i)
+ push_byte((number >> (i << 3)) & 0xff);
+}
+
+void Bytecode_File::push_double(double number)
+{
+ auto bits = *reinterpret_cast<size_t*>(&number);
+ for (size_t i = 0; i < sizeof(size_t); ++i)
+ push_byte((bits >> (i << 3)) & 0xff);
}
void Bytecode_Memory::push_byte(Bytecode_Stream::byte byte)
@@ -49,17 +49,17 @@ void Bytecode_Memory::push_opcode(Bytecode_Stream::Opcode_t opcode)
push_byte(opcode);
}
-void Bytecode_Memory::push_integer(int number)
+void Bytecode_Memory::push_integer(int number, int size)
{
- if (number <= 0xff)
- {
- push_byte((byte)number);
- }
- else
- {
- for (size_t i = 0; i < sizeof(int); ++i)
- push_byte((number >> (i << 3)) & 0xff);
- }
+ for (int i = 0; i < size; ++i)
+ push_byte((number >> (i << 3)) & 0xff);
+}
+
+void Bytecode_Memory::push_double(double number)
+{
+ auto bits = *reinterpret_cast<size_t*>(&number);
+ for (size_t i = 0; i < sizeof(size_t); ++i)
+ push_byte((bits >> (i << 3)) & 0xff);
}
void Bytecode_Memory::set_location(size_t index, size_t location)