Commit graph

287 commits

Author SHA1 Message Date
arookas
2bab0f4389 Added binary parameter 2016-02-07 16:29:03 -05:00
arookas
3401e82667 Fixed: use the field, not the property 2016-02-07 16:20:01 -05:00
arookas
4d7c1da517 Made sunBinary extendable
Now custom binary types are possible
2016-02-07 16:19:23 -05:00
arookas
b7126c1334 Added sunPoint and sunSymbolType public 2016-02-07 16:18:40 -05:00
arookas
e90ecf89a8 Added reverse implicit operator to sunPoint 2016-02-07 01:04:29 -05:00
arookas
4a1f0ec855 Refactored out count/filter properties
I find using the Get<T> and GetCount<T> methods better (even though the
naming convention sucks ass) in that it automatically supports any and
all future symbol types I may add in the future.
2016-02-07 00:47:53 -05:00
arookas
ca7057bf02 Added useful debug instruction output
Now the debug output will log all instructions written, their current
offset, and their arguments
2016-02-05 08:34:29 -05:00
arookas
2438e00383 Fixed: restore writer position after relocations
Damn, this was a nasty bug to find.
2016-02-05 08:33:15 -05:00
arookas
fefb17524c Only write MKFR if there are actually locals
Saves a single instruction, but only sometimes. Woo!
2016-02-05 01:55:48 -05:00
arookas
9749b81452 Got rid of scopes (for now)
The remnants of the previous sub-scope implementation is now hidden
behind a dummy preprocessor symbol. I don't know if I'll add it back,
but it'll at least be a while. The byte code and symbol table just don't
like it.
2016-02-05 01:52:56 -05:00
arookas
8ff73fe0f4 Made PushLoop protected 2016-02-04 16:35:32 -05:00
arookas
fe69761fc9 Removed unused WriteCALL overload 2016-02-04 00:54:40 -05:00
arookas
7a81a4db2c Made use of the null return value 2016-02-03 23:22:54 -05:00
arookas
908ceedc58 Whoops, forgot to commit this in e8c2b09
Now you CAN actual use address literals, at least in expressions.
Whippee, look 'ma, I can use git! 👍
2016-02-03 23:04:02 -05:00
arookas
e8c2b09105 Added address literals
I don't know why someone would want to use a pointer literal in a
script, but now you can because there's an opcode for it and fuck it.
2016-02-03 23:02:25 -05:00
arookas
05c8bce662 Added IEnumerable implementation 2016-02-03 22:44:28 -05:00
arookas
c1dc527007 Fixed: ADR command is unsigned
Which reminds me that I need to add address literals to the grammar so ssc can actually output this opcode...
2016-02-02 23:33:53 -05:00
arookas
15a5e254b6 Fixed: minor typo in code example 2016-02-02 19:17:29 -05:00
arookas
c95411a83b Updated language documentation 2016-02-02 12:21:37 -05:00
arookas
63c5abc42d Removed var-alloc premake option
I'll add it back later once there is a better configuration for variable
allocation.
2016-02-02 01:38:04 -05:00
arookas
12f8ba2fc6 Added overload to variable-symbol constructor 2016-02-01 20:41:55 -05:00
arookas
e76205afea Minor refactoring 2016-02-01 20:31:54 -05:00
arookas
b68f22180d Removed space from file name 2016-02-01 20:28:40 -05:00
arookas
d00036ff8e Clean variable symbols as well
Even though it is kind of ass (a variable is considered used even if it
simply has a single definition statement)...
2016-02-01 20:26:02 -05:00
arookas
085e04798e Added symbol table cleaning functions 2016-02-01 19:18:19 -05:00
arookas
675f2ab4a7 Moved local identifiers to resolver and AST
Now the local identifier is associated with each node so symbols in
function bodies (which are compiled long after the associated
sunScriptFile instances are closed) can be mangled correctly.
2016-02-01 19:17:56 -05:00
arookas
04aba6938b Added overloads to the mangling function 2016-02-01 19:15:55 -05:00
arookas
116aa7996f Removed local stack from context
Now the mangle function requires the local identifier being passed
directly.
2016-02-01 19:15:21 -05:00
arookas
ba559b3fa3 Compile only used functions/builtins
Uses iteration as to properly detect functions called only from within
other functions (which appear unused from the global scope).
2016-02-01 15:53:14 -05:00
arookas
dc559130bf Added RemoveAt function 2016-02-01 15:50:56 -05:00
arookas
db6739be42 Refactored mangling function
Utilizes a string builder instead of shitty String.Concat trickery
2016-02-01 15:50:46 -05:00
arookas
1d324baf9d Added indexer 2016-02-01 15:41:31 -05:00
arookas
f76c5126b9 Moved compilation steps to their own functions 2016-02-01 15:06:35 -05:00
arookas
37280f45d2 Added remove function 2016-02-01 14:58:55 -05:00
arookas
e12607790f Added compile-count property to callable symbols 2016-02-01 14:58:40 -05:00
arookas
08ca27a4b9 Added clean-symbols option
Going to add the actual logic for it later
2016-02-01 14:23:24 -05:00
arookas
b147006ffe Removing packed variables mode
I halfway did it in dc223e5. Here's the other half. Also some minor
cleanup/refactoring as per usual.
2016-02-01 14:16:10 -05:00
arookas
30c3f6f19c Cleanup 2016-02-01 14:14:09 -05:00
arookas
76b57ca3f8 Fixed: code gen for system builtins 2016-02-01 14:04:57 -05:00
arookas
193374ae50 Fixed: close all relocations, not just callsites 2016-02-01 14:04:29 -05:00
arookas
dc223e5c26 Fixed: correctly resolve storable symbols 2016-02-01 14:03:56 -05:00
arookas
6f1dec212b Remove space from file name 2016-02-01 14:02:56 -05:00
arookas
53a50fb62c Added CreateCallSite
Similar to what I had before. Gonna be utility for sunFunctionCall.
2016-02-01 12:45:12 -05:00
arookas
d384899888 Made variables open relocations
This automatically makes it be able to detect if the variable is used at
all, as well, as HasRelocations will be false if none of these have
executed.
2016-02-01 12:39:30 -05:00
arookas
39617cbaf7 Fixed: leftover override 2016-02-01 12:38:12 -05:00
arookas
485c703f20 Made display and index writable 2016-02-01 12:33:25 -05:00
arookas
c3e358adba Moved call-site behavior to base class 2016-02-01 12:33:04 -05:00
arookas
436718ecf0 Added relocation types 2016-02-01 12:24:57 -05:00
arookas
8c655bb110 Changed WriteCALL functions
Changed sunPoint to a plain uint so one can manually place their own
dummy offset if needbe, without using the point system.
2016-02-01 12:20:55 -05:00
arookas
07646b11b3 Minor cleanup 2016-02-01 11:45:52 -05:00