Commit Graph

827 Commits

Author SHA1 Message Date
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 00ded29b35 Improve opp string library 2023-07-09 21:35:49 +02:00
drmortalwombat 66631c915b Prefix and inc operator overload 2023-07-09 10:52:11 +02:00
drmortalwombat 0bab98ccc6 Optimize short signed table access 2023-07-08 22:20:42 +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 1e9e426758 Fix wrong enum type check 2023-07-03 16:44:47 +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 291ff890e6 Change heap layout for vector delete 2023-07-02 13:36:02 +02:00
drmortalwombat 7858c2135b Add malloc/free as intrinsic 2023-07-02 12:00:53 +02:00
drmortalwombat 08adc7f1bd Bump version number 2023-07-01 10:06:08 +02:00
drmortalwombat c8fbc15c37 Copy propagation on struct return of functionr result 2023-07-01 09:27:03 +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 63ebf6aa7c strlen optimization 2023-06-27 15:34:13 +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 04eeedb0b9 Object destruction on break, continue and return 2023-06-21 22:30:28 +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 b8478348ed Fix nullptr reference cause assert in linux 2023-06-18 09:24: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 433270f90f Fix global analyzer not following recursive structs 2023-06-16 16:29:08 +02:00
drmortalwombat 0f182d2d6d Fix over eager function parameter optimiztion 2023-06-16 15:21:30 +02:00
drmortalwombat c300f6c364 Bump version number 2023-06-14 17:19:48 +02:00
drmortalwombat 8a886f0a60 Fix loop invariant error 2023-06-14 16:44: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 ab9ae6bf0e Fix error in intermediate code peephole optimizer 2023-06-09 21:21:35 +02:00
drmortalwombat 404e9ad998 Bump version number 2023-06-08 20:43:37 +02:00
drmortalwombat e593e2affb Loop optimizations 2023-06-08 20:27:11 +02:00
drmortalwombat d054818aa3 Bump version number 2023-06-04 17:37:51 +02:00
drmortalwombat 373811f2bb Report error if void result used in condition 2023-06-03 18:23:35 +02:00
drmortalwombat 962240f09d Fix init state of 32 vsprites mux 2023-06-03 13:01:52 +02:00
drmortalwombat 7c0db6161d Optimize some pointer arithmetic 2023-06-01 22:23:08 +02:00
drmortalwombat 5e699a8dc0 Optimize signed division by 4 and 8 2023-06-01 11:22:36 +02:00
drmortalwombat d80518871a Fix bypass a->y->a chain with tya in middle 2023-06-01 08:13:11 +02:00
drmortalwombat 9e985f7f3d Optimize double and shift 2023-05-29 21:54:55 +02:00
drmortalwombat 9175257bbc Fix function return source position with implicit return 2023-05-28 16:12:12 +02:00
drmortalwombat d6faefb5fc Propagate static stack usage through recursions 2023-05-28 14:30:46 +02:00
drmortalwombat a4faf204cb Fix enums in debug output 2023-05-27 14:17:30 +02:00
drmortalwombat 7d3dc493c0 Fix inter instruction cross block move 2023-05-26 20:16:19 +02:00
drmortalwombat 5564b01d11 Fix sample build crash on linux 2023-05-23 11:05:29 +02:00
drmortalwombat 400017bc54 Assign function exit code to first return statement 2023-05-21 21:14:00 +02:00
drmortalwombat cdbb24b6b2 Add iecbus library 2023-05-21 17:19:26 +02:00
drmortalwombat e6b46a3acf More aggressive value forwarding with local arrays 2023-05-20 13:49:34 +02:00
drmortalwombat d58e74e19a Bump version number 2023-05-19 22:49:54 +02:00
drmortalwombat 2ac276458a Optimize loop invariants in single entry/exit loops 2023-05-19 21:25:29 +02:00
drmortalwombat f8d69f7945 Add "enter" and "leave" attributes to dbj for local variables 2023-05-17 18:27:09 +02:00
drmortalwombat d4caa6bb71 Optimize right shift of byte values with variable shift distance 2023-05-16 19:07:59 +02:00
drmortalwombat 5b0fe1e050 Fix clang warnings 2023-05-14 19:07:10 +02:00
drmortalwombat 8142ed3e72 Merge branch 'main' of https://github.com/drmortalwombat/oscar64 2023-05-14 19:01:41 +02:00
polluks 1616b9335f Fixed typos 2023-05-13 15:57:46 +02:00
drmortalwombat 45963102b8 Fix lower bound of byte -- operator 2023-05-12 14:17:35 +02:00
drmortalwombat 30c602d468 Fix missing enums in dbj files 2023-05-11 09:39:00 +02:00
drmortalwombat a9651a4f2e Optimize combining bits using shift 2023-05-07 20:55:35 +02:00
drmortalwombat 7b16d2c795 Bump version number 2023-05-07 18:03:08 +02:00
drmortalwombat 4aa6b1c47d Improve int dependency in loop analysis 2023-05-07 17:46:53 +02:00
drmortalwombat 0639fdc008 Unify instruction dependency check in optimizer 2023-05-06 18:28:59 +02:00
drmortalwombat 7d12fd4c02 Fix same XY optimization 2023-05-04 11:32:12 +02:00
drmortalwombat df733d09a8 Fix add cross move in native code optimizer 2023-05-01 19:16:25 +02:00
drmortalwombat 30b3ed610e Keep unused variable stores if optimization is turned off 2023-05-01 17:10:27 +02:00
drmortalwombat d047152646 Reduce line number toggling in debug file 2023-05-01 15:38:48 +02:00
drmortalwombat b1fc2e3736 Add __bankof operator 2023-04-30 18:35:04 +02:00
drmortalwombat ac7e1d5867 Fix over eager function parameter optimization 2023-04-16 22:56:58 +02:00
drmortalwombat 2d2d030145 Fix dbj "member" name having a space 2023-04-16 14:51:35 +02:00
drmortalwombat 8ede3abcab Fix loss of loop head status in native basic blocks 2023-04-16 14:05:09 +02:00
drmortalwombat e5805716e2 Fix propagation of volatile flags 2023-04-15 21:53:33 +02:00
drmortalwombat bb00b5af12 Add more generic cartridge support 2023-04-14 18:40:27 +02:00
drmortalwombat 6308f22f25 Fix warnings 2023-04-12 19:02:27 +02:00
drmortalwombat 4c8d7a08d0 Do not add optimized away local variables to dbj file 2023-04-11 20:45:47 +02:00
drmortalwombat 78e48c75fd Auto place globals in zero page with -Oz option 2023-04-10 18:26:59 +02:00
drmortalwombat e23ab50512 Add local variables to debug file 2023-04-09 19:19:57 +02:00
drmortalwombat 373ef6ca85 Add local variables to .dbj files 2023-04-09 10:05:01 +02:00
drmortalwombat 85df217c50 Add warning for const integer truncation 2023-04-09 09:45:13 +02:00
drmortalwombat d5c347da9b Add vera sprite image 2023-04-07 15:47:08 +02:00
drmortalwombat 6ff2038b0e Add commander X16 VERA library 2023-04-06 21:53:47 +02:00
drmortalwombat 97bb7981a3 Improve struct copy alias analysis 2023-04-06 17:14:53 +02:00
drmortalwombat 7803e2ecc4 Fix infinite loop in compiler trying to optimize infinite loops 2023-04-04 08:37:26 +02:00
drmortalwombat 62c3c4ab90 Bump version number 2023-04-02 19:54:45 +02:00
drmortalwombat 32ea493c17 Prepare per function optimization config using pragmas 2023-04-02 19:04:10 +02:00
drmortalwombat 4a2e417e31 Add quotes to attribute names in dbj export 2023-03-31 17:51:09 +02:00
drmortalwombat 0555f3d75d Bump version number 2023-03-29 19:45:08 +02:00
drmortalwombat 2f1172076a Add source level debug information 2023-03-28 21:01:17 +02:00
drmortalwombat 451eaca2b2 Bump version number 2023-03-26 14:35:07 +02:00
drmortalwombat 36a57c87d8 Add commander x16 as target machine 2023-03-24 21:06:27 +01:00
drmortalwombat c2c0244990 More native code common subexpression elimination 2023-03-24 20:23:10 +01:00
drmortalwombat 6af03b34ad Fix infinite optimizer loop 2023-03-21 08:09:12 +01:00
drmortalwombat ba2a90030c Improved striped array pointer propagation 2023-03-19 17:36:03 +01:00
drmortalwombat f354e5bf88 Bump Version Number 2023-03-18 19:07:59 +01:00
drmortalwombat a584f74788 More native code common subexpression elimination 2023-03-18 19:02:05 +01:00
drmortalwombat 9c5e018c5a More simple common subexpression elimination in native code 2023-03-17 09:32:22 +01:00
drmortalwombat 2479ec5dd8 Fix const void pointer assignment check 2023-03-15 22:53:19 +01:00
drmortalwombat 485282019b Optimize 8bit add and pointer access 2023-03-15 17:58:49 +01:00
drmortalwombat 66d17d6df4 Bump version number 2023-03-14 22:18:43 +01:00
drmortalwombat da29f1c0a5 Fix gcc build 2023-03-14 21:53:50 +01:00
drmortalwombat 7617029652 More volatile checks 2023-03-14 20:51:54 +01:00
drmortalwombat f590284ae2 Fix volatile code movement 2023-03-14 20:32:32 +01:00
drmortalwombat 11c624fb4a Optimize loops with shift 2023-03-14 17:49:17 +01:00
drmortalwombat 175520c885 Optimize pointer forwarding with striped addressing 2023-03-14 16:23:37 +01:00
drmortalwombat 83869ad3a0 Shortcut redundant conditional branch sequences 2023-03-13 22:13:02 +01:00
drmortalwombat 718d3ad940 Bump version number 2023-03-12 22:47:19 +01:00
drmortalwombat ecd0fbd364 Fix over eager loop load/store optimizations for values needed after loop 2023-03-12 20:27:00 +01:00
drmortalwombat 7d6f637948 Fix broken volatile check in (),y 2023-03-11 11:29:35 +01:00
drmortalwombat aed086bdb9 Add rom mappers to NES target 2023-03-11 11:01:11 +01:00
drmortalwombat 868564ff08 Add -v3 option for call graph data, change some function in neslib to inline 2023-03-10 17:08:22 +01:00
drmortalwombat 5bd4f4e9a5 Add local labels to listings 2023-03-09 21:04:56 +01:00
drmortalwombat efff725745 Improve labels in disassembler listing, add mlb file for nes 2023-03-09 19:29:46 +01:00
drmortalwombat 2959016496 Fix movement of accu train across JSR that uses the same register 2023-03-09 16:25:51 +01:00
drmortalwombat dd6f1e0cb6 Fix const cast of functions to void * in struct inits 2023-03-08 20:26:46 +01:00
drmortalwombat 905afd6451 Fix preprocessor concat with macro argument 2023-03-08 18:39:40 +01:00
drmortalwombat 4f89ad7680 Add support for Atari 8 bit systems 2023-03-08 15:51:27 +01:00
drmortalwombat 0f4f0ed297 Improve compiler speed 2023-03-08 08:37:43 +01:00
drmortalwombat be15913bd0 Bump version number 2023-03-07 19:18:33 +01:00
drmortalwombat c3977627e9 Fix calling __interrupt function from __interrupt function 2023-03-07 08:27:54 +01:00
drmortalwombat 9662f5e69f Loop counter depend index optimizations for small xy loops 2023-03-06 20:34:02 +01:00
drmortalwombat e1606ab6e7 Bump version number 2023-03-05 22:11:28 +01:00
drmortalwombat 9bd7b5cd48 Add device libraries for various C computers 2023-03-05 15:13:02 +01:00
drmortalwombat 6189e0cc49 Prepare NES machine type 2023-03-04 14:07:34 +01:00
drmortalwombat f34aa2dcbe Prepare support for VIC20 and C128 2023-03-02 20:19:47 +01:00
drmortalwombat e09361295e Relax zero page value forwarding intersection rules 2023-03-01 18:43:35 +01:00
drmortalwombat df89082846 Track state of fast call parameters across function calls to avoid duplicate push 2023-03-01 08:49:51 +01:00
drmortalwombat 49bfd63033 Bump version number 2023-02-27 15:41:37 +01:00
drmortalwombat 096d9efcd9 Fix over eager taxa range reduction 2023-02-27 15:38:19 +01:00
drmortalwombat 1b31742d3b Bump version number 2023-02-26 15:14:25 +01:00
drmortalwombat 797e235056 Small loop accu optimizations 2023-02-26 15:11:37 +01:00
drmortalwombat 4117c9a553 More functions for reu library 2023-02-25 21:02:06 +01:00
drmortalwombat 153c0ef4fa Short loop optimizations 2023-02-22 22:43:35 +01:00
drmortalwombat cddfa5c95f Bump version number 2023-02-20 08:30:04 +01:00
drmortalwombat a91112c05c Pointer in loop optimizations 2023-02-19 18:07:25 +01:00
drmortalwombat 347c336b09 Optimize X vs. Y usage for indexed increment 2023-02-15 22:03:04 +01:00
drmortalwombat 23091a0536 Combining consecutive pointer arithmetic 2023-02-12 20:09:02 +01:00
drmortalwombat 71a071fea4 Loop direction inversion for simple counts 2023-02-11 10:36:46 +01:00
drmortalwombat acbd70a84f Fix XY register propagation for incomming fast parameters 2023-02-10 18:10:41 +01:00
drmortalwombat 5852ca5aea Shortcut conditional branch blocks in intermediate code 2023-02-08 08:51:58 +01:00
drmortalwombat 115b34626e More XY register cross block optimizations 2023-02-07 16:37:41 +01:00
drmortalwombat ff26dffada Optimize alternate XY cross block register use 2023-02-05 12:30:18 +01:00
drmortalwombat 932a65be8c Optimize cross block XY register usage 2023-02-02 20:10:35 +01:00
drmortalwombat d15fd8a451 Fix over eager cross block zp move 2023-01-30 19:27:09 +01:00
drmortalwombat e624011415 Fix crash when compiling address of structs in constants 2023-01-29 10:17:36 +01:00
drmortalwombat dbd0fb6a56 Fix propagate of compare result over potential dual entry empty basic block 2023-01-22 15:18:07 +01:00
drmortalwombat 946b1fe53d Add mouse library 2023-01-22 11:01:03 +01:00
drmortalwombat 0fae7abd72 Optimize simple inline assembler code 2023-01-21 22:41:13 +01:00
drmortalwombat 677de2508b Shuffle temp moves to avoid duplicates 2023-01-21 08:42:22 +01:00
drmortalwombat 16faec8627 Fix loop exit condition broken by Y register lifting 2023-01-19 20:28:02 +01:00
drmortalwombat 862b8aaf06 bump version number 2023-01-19 19:33:38 +01:00
drmortalwombat 29611ec3db Fix striped constant pointer initializer 2023-01-19 19:03:02 +01:00
drmortalwombat 0b30258f80 Dataflow optimizations 2023-01-17 22:42:02 +01:00
drmortalwombat 2f4b2790f6 Register condition block bypassing 2023-01-17 08:02:36 +01:00
drmortalwombat 02db5b5eb1 Static call graph analysis for function arguments 2023-01-15 18:38:18 +01:00
drmortalwombat 761206d009 Propagation of unsigend attribute accross function arguments 2023-01-13 20:14:16 +01:00
drmortalwombat fdb051bd2b Fix right + left shift optimization when shifting from long to int 2023-01-13 15:41:21 +01:00
drmortalwombat 7c11a5347c Fix over eager move of volatile stores 2023-01-13 13:33:34 +01:00
drmortalwombat a9d3673f4e Optimize left shift by four from byte to int 2023-01-12 22:57:19 +01:00
drmortalwombat d6fcb5f9ca Use CPU register A for single byte parameter and returns 2023-01-10 20:41:55 +01:00
drmortalwombat 9a64bcc8b6 Fix select operator for string constants 2023-01-08 22:29:13 +01:00
drmortalwombat b04f05b575 Optimize signed divide by two 2023-01-08 19:17:25 +01:00
drmortalwombat 50d3c843b4 Use X instead of A when lda/sta sequence inside TAXA range 2023-01-08 10:56:14 +01:00
drmortalwombat ffe07a6a3c Optimize multiplication with short negative constants 2023-01-07 13:41:59 +01:00
drmortalwombat c105c3b778 Fix error in final code size reduction step 2023-01-03 21:48:50 +01:00
drmortalwombat 59d77504c8 Fix compile time load of const striped array data 2023-01-01 18:34:52 +01:00
drmortalwombat 57449e3f4a Optimize adds to ors when possible 2022-12-30 20:20:49 +01:00
drmortalwombat 425aae8f72 Fix pointer register loss while forwarding index 2022-12-30 15:55:03 +01:00
drmortalwombat 1a06102668 Shortcut identical consecutive conditional branches 2022-12-25 22:14:12 +01:00
drmortalwombat 5696691a19 Bump version number 2022-12-23 22:50:13 +01:00
drmortalwombat 9daf4fa621 Some more cross block pointer forwarding 2022-12-18 20:33:52 +01:00
drmortalwombat cdd7a15a42 Fix half pointer cross block move 2022-12-18 10:02:16 +01:00
drmortalwombat e202f8e5b5 Bump version number 2022-12-13 20:16:11 +01:00
drmortalwombat ac0f4d232e Fix .d64 layout 2022-12-13 08:49:05 +01:00
drmortalwombat de3c7415b3 Fix error in recursive macro expansion 2022-12-13 08:18:25 +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 5bb21b3b0a Fix block allocator for .d64 generator 2022-12-09 15:45:40 +01:00
drmortalwombat 50ae45a533 Bump version number 2022-12-06 19:07:59 +01:00
drmortalwombat 3edd541750 Fix over eager forwarding of global addresses across loop boundaries 2022-12-06 18:29:37 +01:00
drmortalwombat f56fb9e505 Fix crash in optimizer when declaring too many unused local variables 2022-12-06 15:55:31 +01:00
drmortalwombat 8b631d564e Add autotest for striped arrays 2022-12-03 13:28:03 +01:00
drmortalwombat 9c6b745993 Fix self destruct of load store forwarding dict 2022-11-30 22:47:13 +01:00
drmortalwombat ec31b845b8 Fix type check of pointers derived by address of operator 2022-11-30 15:07:06 +01:00