Commit Graph

252 Commits

Author SHA1 Message Date
drmortalwombat 58ab6818ed Add alignment for functions 2023-08-03 13:34:23 +02:00
drmortalwombat f3eb6e19cf Fix linux build 2023-08-02 16:52:45 +02:00
drmortalwombat 551316fe59 Fix autotest assert 2023-07-26 18:02:22 +02:00
drmortalwombat d8f31b170d Mangle constructor name 2023-07-25 14:37:00 +02:00
drmortalwombat 07323b12f9 Static init of structs with base classes 2023-07-25 11:19:00 +02:00
drmortalwombat 9b2d90ec58 Add autotest for string stream 2023-07-23 11:19:26 +02:00
drmortalwombat bd6db60802 Add iostream library 2023-07-20 14:46:10 +02:00
drmortalwombat 9cdfad7d34 Improve cpp code generation 2023-07-17 07:52:59 +02:00
drmortalwombat 18c21b3fda Optimize long shifts 2023-07-15 22:32:07 +02:00
drmortalwombat fa60c2e658 Improve operator overloading 2023-07-14 07:48:48 +02:00
drmortalwombat 6178bb1f9d Shortcut jump cascades 2023-07-10 22:12:41 +02:00
drmortalwombat 66631c915b Prefix and inc operator overload 2023-07-09 10:52:11 +02:00
drmortalwombat a46cf3a0d3 Add virtual destructor 2023-07-08 22:04:55 +02:00
drmortalwombat ed9aa3503b Added virtual functions 2023-07-08 18:53:06 +02:00
drmortalwombat 0b6a9c3584 Copy elision on return statements 2023-07-05 17:10:23 +02:00
drmortalwombat 0b79d44345 Fix location of error message of duplicate function definition 2023-07-03 22:39:24 +02:00
drmortalwombat 6c7347310b Init const copy construction 2023-07-02 20:48:46 +02:00
drmortalwombat ef0a79b8f0 Index operator overload 2023-07-02 18:21:40 +02:00
drmortalwombat 7f6cf654f6 Implemented new and delete operators 2023-07-02 16:34:17 +02:00
drmortalwombat 7858c2135b Add malloc/free as intrinsic 2023-07-02 12:00:53 +02:00
drmortalwombat 1b73df7e25 const member functions 2023-06-29 18:11:11 +02:00
drmortalwombat fa9aa9c2bb Visibility in base classes 2023-06-29 16:34:38 +02:00
drmortalwombat 3d6b60c9f4 Implement base class constructors 2023-06-28 22:14:29 +02:00
drmortalwombat 478f93922d Error on pointer/integer compare 2023-06-27 18:16:13 +02:00
drmortalwombat a41c3d445b Add class, public, private and protected keywords 2023-06-27 17:18:12 +02:00
drmortalwombat 8f39d736d5 Fixing member functions with includes 2023-06-27 08:12:20 +02:00
drmortalwombat 0b1b4a7d9b Array constructors 2023-06-25 22:24:13 +02:00
drmortalwombat 0f67f7150f Fix linux build 2023-06-25 16:16:26 +02:00
drmortalwombat 6b753c1418 Destructor tracking of temporary variables 2023-06-25 14:25:29 +02:00
drmortalwombat 56740b630d Member constructor and destructor 2023-06-22 19:17:45 +02:00
drmortalwombat a854133f8e Fix over eager global address progpagation 2023-06-22 14:04:18 +02:00
drmortalwombat 9bcec5bf17 Destructors when leaving scopes the normal way 2023-06-21 22:07:00 +02:00
drmortalwombat daf412a47b Add default constructor 2023-06-20 17:16:22 +02:00
drmortalwombat e577791252 Constructors with parameter overloading 2023-06-20 10:26:49 +02:00
drmortalwombat b008d39eae Function overloading in cpp mode 2023-06-18 20:27:20 +02:00
drmortalwombat f72048383a Access to member variables in member functions 2023-06-18 16:37:53 +02:00
drmortalwombat 9e92c2863a Add member functions in cpp mode 2023-06-18 14:41:23 +02:00
drmortalwombat 37416a61cb Add struct inheritance in cpp mode 2023-06-18 10:20:50 +02:00
drmortalwombat 7b40aa59a1 Add references for cpp mode 2023-06-17 21:07:31 +02:00
drmortalwombat fd391690b9 Add .cpp mode and namespace/using 2023-06-17 15:08:03 +02:00
drmortalwombat c83804a76c Cross function constant propagation 2023-06-14 14:40:59 +02:00
drmortalwombat 72687b7581 Add compound literals 2023-06-10 15:17:57 +02:00
drmortalwombat 9175257bbc Fix function return source position with implicit return 2023-05-28 16:12:12 +02:00
drmortalwombat a4faf204cb Fix enums in debug output 2023-05-27 14:17:30 +02:00
drmortalwombat cdbb24b6b2 Add iecbus library 2023-05-21 17:19:26 +02:00
drmortalwombat f8d69f7945 Add "enter" and "leave" attributes to dbj for local variables 2023-05-17 18:27:09 +02:00
polluks 1616b9335f Fixed typos 2023-05-13 15:57:46 +02:00
drmortalwombat 30c602d468 Fix missing enums in dbj files 2023-05-11 09:39:00 +02:00
drmortalwombat 0639fdc008 Unify instruction dependency check in optimizer 2023-05-06 18:28:59 +02:00
drmortalwombat b1fc2e3736 Add __bankof operator 2023-04-30 18:35:04 +02:00
drmortalwombat 8ede3abcab Fix loss of loop head status in native basic blocks 2023-04-16 14:05:09 +02:00
drmortalwombat 6308f22f25 Fix warnings 2023-04-12 19:02:27 +02:00
drmortalwombat 32ea493c17 Prepare per function optimization config using pragmas 2023-04-02 19:04:10 +02:00
drmortalwombat aed086bdb9 Add rom mappers to NES target 2023-03-11 11:01:11 +01:00
drmortalwombat 4117c9a553 More functions for reu library 2023-02-25 21:02:06 +01:00
drmortalwombat 0fae7abd72 Optimize simple inline assembler code 2023-01-21 22:41:13 +01:00
drmortalwombat 29611ec3db Fix striped constant pointer initializer 2023-01-19 19:03:02 +01:00
drmortalwombat d6fcb5f9ca Use CPU register A for single byte parameter and returns 2023-01-10 20:41:55 +01:00
drmortalwombat 425aae8f72 Fix pointer register loss while forwarding index 2022-12-30 15:55:03 +01:00
drmortalwombat 0055911491 Add overlay support 2022-12-10 17:15:25 +01:00
drmortalwombat 0aa9ca0c70 Bump Version number 2022-12-10 16:15:04 +01:00
drmortalwombat 8b631d564e Add autotest for striped arrays 2022-12-03 13:28:03 +01:00
drmortalwombat ec31b845b8 Fix type check of pointers derived by address of operator 2022-11-30 15:07:06 +01:00
drmortalwombat 42b4f46356 Add striped array memory layout 2022-11-16 08:59:02 +01:00
drmortalwombat 44bd9cf595 Fix const enum type check 2022-10-25 11:02:00 +02:00
drmortalwombat 8c19b1f148 Add heapsize and stacksize pragmas and check in linker 2022-09-12 22:01:58 +02:00
drmortalwombat e50f3f9814 Fix lenient semicolon handling in parser 2022-09-10 10:05:44 +02:00
drmortalwombat 5435e1c930 Improve register allocation in complex loops 2022-08-27 15:23:50 +02:00
drmortalwombat b9396542f0 Add page level unrolling 2022-08-07 22:29:33 +02:00
drmortalwombat 5d51ea13c5 Improve register allocator 2022-07-08 21:30:22 +02:00
drmortalwombat bcc59a9afb Add intermediat code select operator 2022-07-02 14:53:00 +02:00
drmortalwombat fdcaf54666 Add unroll pragma for simple loops 2022-06-30 09:33:11 +02:00
drmortalwombat beb8d8e6d7 Fix crash on error messages with unnamed objects 2022-06-06 22:06:57 +02:00
drmortalwombat d833ca6834 Use array of struct assignments for index range validation 2022-05-26 13:55:00 +02:00
drmortalwombat 62d08e139b Optimize pointer arithmetic in loops 2022-04-28 15:52:27 +02:00
drmortalwombat 1ee7845bb4 Fix disassembler choking on long names 2022-04-12 18:22:38 +02:00
drmortalwombat c635ae8136 Optimize const and/or sequences 2022-04-10 12:28:39 +02:00
drmortalwombat 72264109e9 Add experimental zero page allocation for global variables 2022-04-06 19:16:44 +02:00
drmortalwombat fc5c9f137a Add indexed const array initializer 2022-03-26 10:29:48 +01:00
drmortalwombat 6fe9a4f167 Fastcall optimization for 2nd and 3rd level calls 2022-03-10 16:35:35 +01:00
drmortalwombat 6bd3ecb689 Fix over eager const expression inliner 2022-02-19 12:16:33 +01:00
drmortalwombat 1221649a3d Add check for __interrupt attribute on function pointers call from interrupt code 2022-02-15 09:49:46 +01:00
drmortalwombat fdb112a037 Add constant address calculation for struct members 2022-02-14 20:13:30 +01:00
drmortalwombat 2f009f129e Add regions replicated in multiple easyflash banks 2022-02-07 18:04:17 +01:00
drmortalwombat d4352ef043 Add __hwinterrupt function decoration 2022-02-06 10:28:09 +01:00
drmortalwombat 5147ec6bc9 Fix function pointers in struct consts 2022-02-05 16:52:54 +01:00
drmortalwombat 34220b96e3 Add auto generation of multiplier tables if variable factor is known to be small 2022-02-02 22:05:55 +01:00
drmortalwombat c6133ce7c0 Add error message on crash, fix infinite loop, extend asm listing 2022-02-02 08:58:35 +01:00
drmortalwombat e1f605b28c Optimize value forwarding and memory alias check 2022-01-31 13:33:39 +01:00
drmortalwombat 60165a7fc3 Add "*" symbol for current address in inline assembler 2022-01-29 13:33:57 +01:00
drmortalwombat 5c8b1c6daf Add __export, __native and __interrupt storage class specifiers 2022-01-26 21:48:19 +01:00
drmortalwombat 94532fe038 Fix enum size 2022-01-26 12:41:12 +01:00
drmortalwombat 9f41a55a18 Fix static declaration in header files 2022-01-23 21:14:30 +01:00
drmortalwombat ca93f107c3 Add relocated sections 2022-01-22 18:21:52 +01:00
drmortalwombat 742866c8c2 Enable charmap inside a series of string literals 2022-01-22 13:41:24 +01:00
drmortalwombat cc927d778f Improve C const declaration compatibility 2022-01-21 14:42:49 +01:00
drmortalwombat c72ca3547b Fix longjump and kernalio end of file handling 2022-01-13 10:37:44 +01:00
drmortalwombat 640007546f Add __assume builtin function 2022-01-08 15:51:17 +01:00
drmortalwombat 57c72b1788 Reduce y register pressure if x available 2021-12-27 10:49:18 +01:00
drmortalwombat 893b6f2294 Optimize long divide for short divisor 2021-12-19 22:18:05 +01:00
drmortalwombat 6d716b9478 Optimize 32bit shifts 2021-12-18 22:21:39 +01:00
drmortalwombat a1fda2b957 Fix float parameter and return values 2021-12-09 21:38:36 +01:00
drmortalwombat 93174c8e68 Add overflow and underflow checking for floats 2021-11-24 20:01:08 +01:00
drmortalwombat 4af2bc0bb2 Add setjmp and longjmp 2021-11-20 20:25:53 +01:00
drmortalwombat cd77372350 Remove superfluous rts from inline assembler blocks that end with a jmp 2021-11-16 20:54:10 +01:00
drmortalwombat 180da3de4a Fix array[] parameters in functions 2021-11-04 08:29:54 +01:00
drmortalwombat e057e24918 Added stddef.h 2021-10-23 16:51:27 +02:00
drmortalwombat 55b79ecfce Fix struct scoping 2021-10-23 11:56:30 +02:00
drmortalwombat 9833656fcf More cartridge hacking 2021-10-19 22:29:23 +02:00
drmortalwombat 6481e119e4 Fix various errors triggered by fuzzing 2021-10-17 18:20:44 +02:00
drmortalwombat 194c7a2af4 Fix int + pointer operation 2021-10-16 23:07:28 +02:00
drmortalwombat 19a54432f6 Struct function return value 2021-10-16 16:45:08 +02:00
drmortalwombat c2886e2532 Fix infinite for(;;) loop 2021-10-16 10:49:11 +02:00
drmortalwombat 545b9a6aba Fix cascaded assignment 2021-10-16 10:27:32 +02:00
drmortalwombat fc0f8e2442 Fix conditional operator with pointes and arrays 2021-10-14 13:15:10 +02:00
drmortalwombat da57ae00c5 Add vic include file 2021-10-11 22:14:19 +02:00
drmortalwombat d493bddf8d Improve inline assembler parser 2021-10-10 20:51:21 +02:00
drmortalwombat 0e59af5122 Fix petscii characters changed includes and pragmas 2021-10-10 17:30:57 +02:00
drmortalwombat 11af372509 More autoinline optimizations 2021-10-10 17:14:12 +02:00
drmortalwombat 60489bb79e Refactor inter instrction operator handling 2021-10-08 09:07:01 +02:00
drmortalwombat e7231e27e0 Prepare fastcall 2021-10-07 15:14:23 +02:00
drmortalwombat fb4ae26afb Prepare access to local variables in inline assembler 2021-10-07 10:42:18 +02:00
drmortalwombat 330e022a43 Exclude bss segment from prg file 2021-10-05 18:24:03 +02:00
drmortalwombat 542cb66693 Fixes to get dhrystone.c to compile and run 2021-10-03 20:35:50 +02:00
drmortalwombat bf825302aa Add function inline expansion 2021-10-02 22:04:42 +02:00
drmortalwombat 3d9302c90c Support for long integer with byte code 2021-10-02 10:06:13 +02:00
drmortalwombat e713dc5940 Direct embedding of inline assembler in native code 2021-09-28 18:35:23 +02:00
drmortalwombat 9eb5412848 Merge changes for Mac build 2021-09-27 13:38:45 +02:00
drmortalwombat f925833884 Move executable into bin folder for windows and linux 2021-09-25 18:20:32 +02:00
drmortalwombat fd10525780 Add makefile for linux 2021-09-24 16:17:20 +02:00
drmortalwombat 123da8c155 Add charmap pragma 2021-09-23 08:26:46 +02:00
drmortalwombat eebc39e53a Fix return type coercion, region based linker 2021-09-21 20:44:19 +02:00
drmortalwombat 1d64404b24 Change format of error messages 2021-09-21 14:55:11 +02:00
drmortalwombat 27d7baaac2 Using linker objects and sections 2021-09-20 22:36:16 +02:00
drmortalwombat d3d20bee26 Prepare section based linker 2021-09-19 22:22:16 +02:00
drmortalwombat 10bb751449 Fix struct over header boundaries 2021-09-19 20:00:36 +02:00
drmortalwombat c5d1e2351e Add support for assembler function as const initialiser 2021-09-19 17:24:48 +02:00
drmortalwombat e2e20581a6 Prepare byte level optimisations 2021-09-14 16:34:48 +02:00
drmortalwombat 8de4bef436 Improved value forwarding across conditiona branches 2021-09-12 22:32:31 +02:00
drmortalwombat 87ccd5e221 More autotest 2021-09-12 16:05:23 +02:00
drmortalwombat dac1fa70b3 Fix array const init by string literal 2021-09-12 14:42:02 +02:00
drmortalwombat 8031ad8dee Add union 2021-09-12 10:04:37 +02:00
drmortalwombat 82d499fdae Native code compiler is functional same level as byte code
Runs all the autotests now in byte code and native code
2021-09-11 22:21:57 +02:00
drmortalwombat 897de02adf Fix unnamed parameters in function prototype 2021-09-11 16:05:31 +02:00
drmortalwombat 93b6aca8a3 More native code generator 2021-09-11 15:01:32 +02:00
drmortalwombat 07f797e577 Formatting options in printf 2021-09-10 16:13:47 +02:00
drmortalwombat fcedf69aff More native code compiler additions 2021-09-08 22:04:01 +02:00
drmortalwombat 056df56eef First shot native code generator
Implements basic load, store compare and add/sub/shift for native compiled functions
2021-09-07 22:35:11 +02:00
drmortalwombat 722347609d Fix array of array of char init with strings 2021-09-07 13:37:56 +02:00
drmortalwombat a839ccc960 Moved storage class parsing from base type to variable level 2021-09-07 08:13:14 +02:00