1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-26 12:49:21 +00:00
Commit Graph

2886 Commits

Author SHA1 Message Date
Flight_Control
db49ca6aab Major changes:
- Renamed #pragma far() to #pragma bank() upon design recommendations of @jesper.
- renamed #pragma near to #pragma nobank, to avoid using bank(-1).
- renamed __far directive to __bank directive.
- introduced bank area upon design recommendation of jesper, and replaced this with the already present code segment linkage to banking. So the structured stayed the same, only the naming changed! This unlink from segment indeed makes things easier when no segments are in scope of the program.
- added bank area as part of the fragment signature, so now call_far_[platform]_[bankarea]_prepare.asm, call_far_[platform]_[bankarea]_execute.asm, call_far_[platform]_[bankarea]_finalize.asm are expected to be present in the compiler.
- removed the c code prepare, execute, finalize idea. The fragments seem to be enough for the moment.
- added ram and rom fragments for far calls for the cx16.
- Cleaned banking logic from Statement level.
2022-11-21 18:17:35 +01:00
Flight_Control
1a63d437a0 - Refactored far call logic during parsing. The pragmaFarSegs hash table has been removed from the Pass0GenerateStatementSequence. Instead, a currentFarSegment is controlling the #pragma logic.
- Refactored pragmaCodeSegs HashMap, which has been removed from Pass0GenerateStatementSequence and moved to Program. It controls which code segment have been defined, and a validation is implemented in the far_seg pragmas.
- Refactored __far() to use the code segments, in analogy to far_seg pragmas.
- Refactored Procedure, which implements functions to use the FarSegment to decide on far declaration and far bank retrieval.
- refactored CallingConvention. Removed earlier quick implementation of bankFar variable as a local property, and declaredFar in the Procedure class. Now everyting is controlled through the farSegment.
- Refactored Procedure, the removal of FAR_CALL calling convention. It is wrong to implement FAR_CALL calling convention, because far and near calls can be stack calls, phi calls and even a varcall can be near of far.
- Removed the Pass1ProcedureFar because far and near implementation is not defined in statement level, it is defined on procedure level. But I've kept Pass1ProcedureFar to suppor the logic for inline prepare, execute, finalize routines during further implementation.
- Refactored directive FAR to match the directive far_seg() structure.
- Refactored complete logic during Pass4CodeGeneration to process statement call fragment generation to decide on near or far calls within the logic, taking into account the calling convention used.
- Added new fragments call_far[platform]_prepare.asm, call_far[platform]_execute.asm, call_far[platform]_finalize.asm and deleted call_far[platform]_entry.asm, call_far[platform]_exit.asm
- Renamed pragmas far_seg and near_seg to simply far and near respectively. Updated test cases with this change.
- Added test cases.

TODO: The actual inline implementation of prepare, execute, finalize functions when platform .asm fragments are not used.
TODO: Implementation of the near directive.
2022-11-20 09:56:10 +01:00
Flight_Control
d19c005d79 Fine tune of the phi-far-4 example to clearly illustrate #pragma near_seg utilization. 2022-11-19 08:19:18 +01:00
Flight_Control
d7a135aaee Implementation of #pragma near_seg without prameters.
There was a change needed to update the parameter parsing main algorithm, to make parameters optional instead of mandatory.
2022-11-19 08:06:52 +01:00
Flight_Control
1ef785a254 Parsing implementation of
#pragma far_seg(segment, bank, call_prepare, call_execute, call_finalize)
with variable parameters, other option is:
   #pragma far_seg(segment, bank)

After parsing a FarSegment HashMap is created that is later used for the far or near call determination.
Added currentFarSegment variable.
Added near in KickCLexer for __near directive.
Added far_seg and near_seg #pragma keywords.

near_seg is to be parsed in the next commit.
2022-11-19 07:45:07 +01:00
Flight_Control
2f2028f3a1 far calls 2022-11-17 07:43:08 +01:00
Flight_Control
8801a3e5e2 Fixing bugs:
- far calls are now ALL iterated and flagged with a bank!
- procedure objects are taken as the base for far call asm generation, not the call objects anymore (too tricky). But i have kept the call objects to be also updated with the bank for any reference later!
2022-11-16 22:19:22 +01:00
Flight_Control
d7405d8669 Fixing bugs:
- far calls are now ALL iterated and flagged with a bank!
- procedure objects are taken as the base for far call asm generation, not the call objects anymore (too tricky). But i have kept the call objects to be also updated with the bank for any reference later!
2022-11-16 22:18:48 +01:00
Sven Van de Velde
f948ce0571 far call test cases. 2022-11-16 17:41:25 +01:00
Sven Van de Velde
4a4d6f72d0 far calls for __stackcall calling convention functions. 2022-11-16 17:11:18 +01:00
Flight_Control
828e38a8b3 far calls 2022-11-16 06:54:44 +01:00
Jesper Balman Gravgaard
152832fd4e Merge branch '807-fix-multiplication-bug' into 'master'
Closes #807 bug when rewriting multiplication with power of 2, where the...

Closes #807

See merge request camelot/kickc!24
2022-11-13 10:23:23 +00:00
jespergravgaard
63932ef555 Closes #807 bug when rewriting multiplication with power of 2, where the constant is the left operand. 2022-11-13 11:11:27 +01:00
jespergravgaard
95aa5ec6c4 Fixed problem where the compiler sometimes deletes a resource file when called. Closes #775 2022-06-19 09:14:21 +02:00
jespergravgaard
13a7063df0 Added some fragments. 2022-05-12 18:27:55 +02:00
jespergravgaard
e15c02839d Added some fragments. 2022-04-02 10:24:24 +02:00
jespergravgaard
d4b68806f8 Added PoC script for creating executable on MacOs using jpackage. #757 2022-02-20 21:14:26 +01:00
jespergravgaard
d9d7f2cf03 touching fragment cache. 2022-02-18 10:46:49 +01:00
jespergravgaard
46f66c5499 Merge remote-tracking branch 'origin/master' 2022-02-18 09:18:17 +01:00
jespergravgaard
c7550fbd37 Updated version 2022-02-18 09:18:08 +01:00
Jesper Balman Gravgaard
4c23b4ad9f Merge branch '770-update-45gs02-to-reflect-changed-z-indexing-when-doing-ldq' into 'master'
Resolve "Update 45GS02 to reflect changed Z-indexing when doing LDQ."

Closes #770

See merge request camelot/kickc!18
2022-02-13 21:48:03 +00:00
jespergravgaard
e867c3a1d0 Updated LDQ z-indexing. 2022-02-13 22:35:08 +01:00
Jesper Balman Gravgaard
230776a2da Merge branch '766-add-huc6280-tst-instruction-addressing-modes' into 'master'
Finished implementing support for huc6280 transfer instructions with abs,abs,abs addressing mode.

Closes #766

See merge request camelot/kickc!17
2022-02-13 11:05:44 +00:00
jespergravgaard
dec47ab811 merged master. 2022-02-13 11:52:34 +01:00
jespergravgaard
2791a0e099 Finished implementing support for huc6280 transfer instructions with abs,abs,abs addressing mode. 2022-02-13 11:49:02 +01:00
Jesper Balman Gravgaard
49abe6cdb7 Merge branch '766-add-huc6280-tst-instruction-addressing-modes' into 'master'
Resolve "Add Huc6280 TST instruction addressing modes"

Closes #766

See merge request camelot/kickc!15
2022-02-12 07:22:16 +00:00
jespergravgaard
42e31f6e69 Finished implementing support for huc6280 TST #imm.zp / #imm,abs / #imm,zp,x / #imm,abs,x. 2022-02-12 07:35:59 +01:00
jespergravgaard
ad48dfb7cf fixed test. 2022-02-10 21:16:39 +01:00
jespergravgaard
9c28ee4615 Made immediate word and relative word addressing modes explicit. Improved opcode-guesser to include search for these modes. 2022-02-09 07:14:19 +01:00
jespergravgaard
0b4a53ae12 Fixed new addressing modes. 2022-02-04 07:06:02 +01:00
Jesper Balman Gravgaard
34d258c3c5 Merge branch '767-problem-with-z-register-on-cpu-huc6280' into 'master'
Resolve "Problem with Z-register on CPU HuC6280"

Closes #767

See merge request camelot/kickc!16
2022-02-04 05:59:13 +00:00
jespergravgaard
48ed6891aa Removed Z register from huc6280 2022-02-04 06:46:25 +01:00
jespergravgaard
517b2af6d5 Added support for CPU HUC6280. 2022-01-30 21:41:50 +01:00
Jesper Balman Gravgaard
ec3120fc1d Merge branch 'jespergravgaard-master-patch-82001' into 'master'
Fixed mkdir problem.

See merge request camelot/kickc!13
2022-01-24 08:26:29 +00:00
Jesper Balman Gravgaard
66205f3a99 Fixed mkdir problem. 2022-01-24 08:19:42 +00:00
Jesper Balman Gravgaard
0685e974db Merge branch '758-add-support-for-cpu-huc6280' into 'master'
Resolve "Add support for CPU HuC6280"

Closes #758

See merge request camelot/kickc!12
2022-01-24 00:17:33 +00:00
jespergravgaard
77d21270fb Added support for CPU HUC6280. 2022-01-24 01:04:31 +01:00
jespergravgaard
7b06467064 collapsed build&test. fixed doxygen. 2022-01-23 23:41:54 +01:00
Jesper Balman Gravgaard
d9aca64c45 Merge branch '761-improve-gitlab-pipeline' into 'master'
Resolve "Improve gitlab pipeline"

Closes #761

See merge request camelot/kickc!11
2022-01-23 21:51:48 +00:00
jespergravgaard
c9284e7ede moved fragment cache to target folder. generated during test stage. 2022-01-23 22:31:55 +01:00
jespergravgaard
c9ec085ad2 testing with ASM cache 2022-01-23 21:30:53 +01:00
jespergravgaard
1ec22515e1 pipeline work-in-progress 2022-01-23 21:24:59 +01:00
jespergravgaard
5c8aec6d9b pipeline work-in-progress 2022-01-23 21:07:44 +01:00
jespergravgaard
00b6414146 pipeline work-in-progress 2022-01-23 20:55:21 +01:00
jespergravgaard
bd55231f6f pipeline work-in-progress 2022-01-23 20:50:27 +01:00
jespergravgaard
14f3445669 pipeline work-in-progress 2022-01-23 20:44:24 +01:00
Jesper Balman Gravgaard
d44a56fa77 Merge branch 'IcePic-master-patch-13431' into 'master'
Add function to clear pixels in c64-bitmap.c.

See merge request camelot/kickc!8
2022-01-23 18:49:55 +00:00
jespergravgaard
8246784a54 ignoring kickc.iml 2022-01-22 17:34:25 +01:00
jespergravgaard
4d521217dd Postponed zeropage overflow to main memory until the final allocation (after uplift and optimization). Closes #753 2022-01-09 11:04:24 +01:00
jespergravgaard
b446d4d64b added missing fragments. closes #751 2022-01-08 13:50:11 +01:00