Magnus Norddahl
53b11dd0d8
- fix missing zero extend
2019-04-15 14:32:36 +02:00
Magnus Norddahl
29f6258d33
- fix that the code for META and CLSS was swapped
2019-04-15 14:32:34 +02:00
Magnus Norddahl
c2669d3a03
- some jump fixes
2019-04-15 14:32:33 +02:00
Magnus Norddahl
f7dd6a1313
- fix jump direction in EmitComparisonOpcode
2019-04-15 14:32:31 +02:00
Jonathan Russell
9530a2e43c
- more spelling mistakes...
2019-04-15 14:32:29 +02:00
Jonathan Russell
a770b3af16
- fix minor spelling error
2019-04-15 14:32:28 +02:00
Jonathan Russell
821c336c5e
- add vector comparison opcodes
2019-04-15 14:32:26 +02:00
Magnus Norddahl
14d6aa8cac
- remove some macros and add functions checking if a register needs to be copied
2019-04-15 14:32:25 +02:00
Magnus Norddahl
35a8162022
- implemented LBIT, SBIT, VTBL, SCOPE, NEW, NEW_K, THROW, EQA_R and EQA_K
2019-04-15 14:32:23 +02:00
Magnus Norddahl
4cab630871
- implement emitter functions for LKP_R, META, CLSS, LO, LO_R, LP, LP_R, SO, SO_R, SP, SP_R
...
- add emit code for throwing exceptions on null pointers
2019-04-15 14:32:22 +02:00
Magnus Norddahl
2efaa7846d
- improve jit debug output slightly
2019-04-15 14:32:20 +02:00
Magnus Norddahl
f0dbc8414a
- fix offsetting bug when loading address registers
2019-04-15 14:32:19 +02:00
Magnus Norddahl
db78d02d79
- fix swapped operands in EmitSUBF_KR
2019-04-15 14:32:17 +02:00
Magnus Norddahl
ede8c6d86b
- implement MODF_RR, MODF_RK and MODF_KR
2019-04-15 14:32:16 +02:00
Magnus Norddahl
708362b31f
- fix mul using wrong instruction
2019-04-15 14:32:14 +02:00
Magnus Norddahl
c46a4d4483
- implement BOUND opcodes and add logging the resulting assembly code if asmjit throws an exception
2019-04-15 14:32:13 +02:00
Magnus Norddahl
c2938926a7
- implement a few more opcodes and fix some bugs
2019-04-15 14:32:11 +02:00
Magnus Norddahl
9427e22d7c
- implemented pow, min, max
2019-04-15 14:32:10 +02:00
Magnus Norddahl
f4181be6b8
- implement ATAN2 and FLOP
2019-04-15 14:32:08 +02:00
Magnus Norddahl
77fe376eca
- implement DYNCAST*, TEST, TESTN and JMP opcodes
2019-04-15 14:32:07 +02:00
Magnus Norddahl
9474a2554d
- convert JitCompile's switch into a class to enable easier code reuse
2019-04-15 14:32:05 +02:00
Magnus Norddahl
9889d2fbb6
- fix clang compile error
2019-04-15 14:32:03 +02:00
Magnus Norddahl
976a7fab3a
- implement throwing by storing exception information in a struct, then return from the jitted function and throw from c++
2019-04-15 14:32:02 +02:00
Jonathan Russell
45bc0d266e
- removed the ability to use printf-like formatting in emitAbortExceptionCall, it barely worked
2019-04-15 14:32:00 +02:00
Jonathan Russell
197b20af5d
- add first draft of abort exceptions
2019-04-15 14:31:58 +02:00
Magnus Norddahl
c65b7076eb
- call play sqrt when calculating lengths
2019-04-15 14:31:57 +02:00
Magnus Norddahl
50d0049460
- fix 8 and 16 bit store
2019-04-15 14:31:55 +02:00
Magnus Norddahl
76c08bf725
- destroy the jit runtime when all script functions are destroyed
2019-04-15 14:31:54 +02:00
Magnus Norddahl
4820c32794
- disable all unimplemented opcodes in the switch to ensure 'Unknown VM opcode' fatal error is generated if CanJit has a bug
2019-04-15 14:31:52 +02:00
Magnus Norddahl
e9914f38af
Fix compile errors on macOS
2019-04-15 14:31:51 +02:00
Jonathan Russell
601c492cf2
- added remaining int arithmetic opcodes (and fixed float loading offset issue)
2019-04-15 14:31:49 +02:00
Jonathan Russell
e771064657
- forgot to turn off debug switch in last commit
2019-04-15 14:31:47 +02:00
Jonathan Russell
4228891da2
- made absMaskInt const
2019-04-15 14:31:46 +02:00
Jonathan Russell
8306815292
- implemented CMP_APPROX for OP_EQF_*, making ~== work for doubles
2019-04-15 14:31:44 +02:00
Chronos Ouroboros
e07af1428c
Updated CanJit's supported opcodes list.
2019-04-15 14:31:43 +02:00
Chronos Ouroboros
63cda1c13d
Pointer addition opcodes must leave NULL pointers as they are.
2019-04-15 14:31:41 +02:00
Chronos Ouroboros
3c8aa9f641
Changed binary int ops to use a temporary register, fixed some opcodes.
...
For some reason, binary ops might reuse one of the input registers as the output register.
This is a problem for very obvious reasons.
2019-04-15 14:31:39 +02:00
Jonathan Russell
62ece01c0a
- made CMP_CHECK checking compile time
2019-04-15 14:31:37 +02:00
Jonathan Russell
f897f2bfd3
- added exact floating point comparison opcodes
2019-04-15 14:31:36 +02:00
Jonathan Russell
5846357268
- implemented all integer comparison operators
2019-04-15 14:31:34 +02:00
Jonathan Russell
166ce87a86
- adds OP_EQ_R, the first instruction using jumps
2019-04-15 14:31:33 +02:00
Magnus Norddahl
5c3ef8ac15
- add misc float opcodes
2019-04-15 14:31:31 +02:00
Jonathan Russell
b242ffdbbe
- added most vector maths opcodes
2019-04-15 14:31:29 +02:00
Chronos Ouroboros
73892f4a6e
Fix floats and implement some more opcodes.
2019-04-15 14:31:27 +02:00
Magnus Norddahl
113714990e
- copy initial register values from the VM frame
2019-04-15 14:31:26 +02:00
Magnus Norddahl
10a6ab4d56
- implement most of the integer math opcodes
2019-04-15 14:31:24 +02:00
Magnus Norddahl
d651c02b17
- embed and use asmjit to JIT ZScript VM functions
2019-04-15 14:31:22 +02:00
Christoph Oelckers
53c87fd5eb
- extended the register limit for 'param'.
...
The instruction one free instruction byte so it's now using that to extend its argument's register range to 65535.
For param this is needed because it passes strings by reference and creating an implicit temporary copy for string constants does not work here.
2018-10-14 10:31:48 +02:00
Christoph Oelckers
608e5f5bcf
- fixed bad code for OP_SRL_KR.
2018-09-02 18:47:42 +02:00
alexey.lysiuk
c55cf00c8e
- added missing null pointer checks to VM ops
2018-07-16 19:11:20 +02:00