Website Summary Files Commits Branches @commit @diff @stats
path: root / spasm / src / asm / bytecode.cpp
diff options
context:
space:
mode:
Commit9468ccb2024e850bacfcddcabc5402968c29b956 (patch)
Author
 Dimitar Trendafilov <dimitar@coherent-labs.com>
2018-11-22 14:17:21 +0200
Committer
 Dimitar Trendafilov <dimitar@coherent-labs.com>
2018-11-22 14:17:21 +0200
Files3dd2ecc4577e02495123ace7982cb25a3bb922d5 /spasm/src/asm/bytecode.cpp
IPL-9468ccb2024e850bacfcddcabc5402968c29b956.tar
IPL-9468ccb2024e850bacfcddcabc5402968c29b956.tar.gz
IPL-9468ccb2024e850bacfcddcabc5402968c29b956.zip
Parent3ce342b97b6c22b7ce6dded7be7b5c6bf9edcc04 (diff)
Fixed linux build
1 files changed, 17 insertions, 4 deletions
-rw-r--r--spasm/src/asm/bytecode.cpp21
diff --git a/spasm/src/asm/bytecode.cpp b/spasm/src/asm/bytecode.cpp
index ad436ce..a4a1e6e 100644
--- a/spasm/src/asm/bytecode.cpp
+++ b/spasm/src/asm/bytecode.cpp
@@ -26,7 +26,20 @@ void Bytecode_File::push_opcode(Bytecode_Stream::Opcode_t opcode)
push_byte(opcode);
}
-void Bytecode_File::push_integer(int number, int size)
+union DoubleToBits
+{
+ double as_double;
+ int64_t as_bits;
+};
+
+int64_t to_bits(double d)
+{
+ DoubleToBits v;
+ v.as_double = d;
+ return v.as_bits;
+};
+
+void Bytecode_File::push_integer(int64_t number, int size)
{
for (int i = 0; i < size; ++i)
push_byte((number >> (i << 3)) & 0xff);
@@ -34,7 +47,7 @@ void Bytecode_File::push_integer(int number, int size)
void Bytecode_File::push_double(double number)
{
- auto bits = *reinterpret_cast<size_t*>(&number);
+ auto bits = to_bits(number);
for (size_t i = 0; i < sizeof(size_t); ++i)
push_byte((bits >> (i << 3)) & 0xff);
}
@@ -49,7 +62,7 @@ void Bytecode_Memory::push_opcode(Bytecode_Stream::Opcode_t opcode)
push_byte(opcode);
}
-void Bytecode_Memory::push_integer(int number, int size)
+void Bytecode_Memory::push_integer(int64_t number, int size)
{
for (int i = 0; i < size; ++i)
push_byte((number >> (i << 3)) & 0xff);
@@ -57,7 +70,7 @@ void Bytecode_Memory::push_integer(int number, int size)
void Bytecode_Memory::push_double(double number)
{
- auto bits = *reinterpret_cast<size_t*>(&number);
+ auto bits = to_bits(number);
for (size_t i = 0; i < sizeof(size_t); ++i)
push_byte((bits >> (i << 3)) & 0xff);
}