X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fpic16%2FNOTES;h=16cfa6b41d3e6e6662dcb9a59085d6e4a7c567db;hb=5a1d5e778e85664f4e6657019348b4756b16eacb;hp=0f8574fb3edf2122376299961ab62bd93354f778;hpb=3e6a1de6a8b8e4031ce47445eb9bebed88a283b7;p=fw%2Fsdcc diff --git a/src/pic16/NOTES b/src/pic16/NOTES index 0f8574fb..16cfa6b4 100644 --- a/src/pic16/NOTES +++ b/src/pic16/NOTES @@ -4,20 +4,92 @@ $Id$ Current pic16 port status is: Development Some things may change without notification between port updates. The latest -CVS snapshot is guarenteed to compile without problems, but does not +SVN snapshot is guarenteed to compile without problems, but does not guarantee backwards compatibility. For any questions please ask the current port developers. Current developer: -Vangelis Rokas +Raphael Neider Other people to contact: +Vangelis Rokas Scott Dattalo ====================================================================== ====================================================================== +2006-Mar-14 Vangelis Rokas +1. Added enviroment variable 'PIC16_PACKED_BITFIELDS' which agressively +packs bitfields in structures + +2005-Mar-23 Vangelis Rokas +1. I have added some optimizations that are controlled via enviroment +variables to allow checking. Later these will be either enabled globally +or controlled by command line options. The variables are: + a. OPTIMIZE_BITFIELD_POINTER_GET : optimizes bit field pointer reads + + b. NO_REG_OPT : there is no register optimization performed by pCode + optimizer + + + +2004-Oct-29 Vangelis Rokas +1. Function parameters are passed now all via stack. This might +lower performance, but some issues are solved this way. Later +we can enable passing through WREG,PRODL,PRODH,FSR0L by implementing +specific pragmas + + +2004-Sep-27 Vangelis Rokas +1. Function parameters have been extended to cover functions with +variable arguments. Now function parameters follow the rules below: + + a) void foo(long a, int b, char c) + void foo(long a, int b, char c) reentrant + +Stack layout: c, b+1, b, a+3, a+2, a+1 and WREG = a + + b) prototype: void foo(long a, int b, ...) + + example: foo(0xaaffeedd, 0xbbcc, 0x4455, 0x7788); + +Stack layout: 0x77, 0x88, 0x44, 0x55, 0xbb, 0xcc, 0xaa, 0xff, 0xee, 0xdd + +WREG is not used in functions with variable arguments so that the address +of the first parameter can be taken. + + + + +2004-Sep-24 Vangelis Rokas +1. Began implementation of generic pointers, current specs are: + 0x0 xxxxxxx -> code pointer + 0x8 xxxxxxx -> data pointer + 0x4 xxxxxxx -> eeprom pointer (currently unimplemented) + + +2004-Aug-30 Vangelis Rokas +1. A few months ago Hans Dorn had the idea to support general pointer +for accessing all code, eeprom data and data ram memory. These pointers +would have 3 bytes of size (24-bits), of which only the 21 lower bits +would be useful. The rest of them could be used to indicate the pointer +type. I.e. +0x4xxxxxxx would mean code pointer +0x8xxxxxxx would mean eeprom pointer +0xcxxxxxxx would mean data ram pointer + +The implementatio of such pointers needs a lot of work and general +reform of pointer access, data initializing functions and the writing +of support functions for decoding their type. + +The implementation of such pointers along with the implementation of +a more SDCC like stack access system will allow the writing of variable +arguments functions like printf etc... Also one set of functions will be +able to handle all data types without having to worry about where they +are placed. + + 2004-May-23 Vangelis Rokas 1. The improvement of the port has been stalled a bit. But, struct/union @@ -68,9 +140,7 @@ programs is: --pcode-verbose enable verbose pcode generator messages - port options - --pgen-banksel enable banksel directives for the assembler - This will be turned on by default later, but left as - is for now + --pno-banksel disable banksel directives for the assembler --pomit-config-words does not emit configuration instruction in the translation This is useful when copmiling multiple sources, when you do not want multiple