From: SourceForge.net <no...@so...> - 2004-10-30 22:31:45
|
Bugs item #1057478, was opened at 2004-10-30 15:31 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1057478&group_id=599 Category: pic16 target Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: genjumptab's code fails Initial Comment: The code generated by PIC16's genJumpTab (used for resolving switch-case-statements) has two problems: (1) the jump table is indexed with the value N of the case-statement but should be indexed by N*4 (as 4 is the number of bytes spent on the GOTO case_N_label instruction) (2) if the jump table (i.e. the list of GOTOs) crosses a 256 byte boundary in program memory, not only PCL but also PCLATH and possibly PCLATU have to be adjusted We attached a patch fixing both issues but also introducing quite an overhead on the jump table code (multiplying N by four and preparing the 256 bank crossing). Maybe switch- statements with less than (say) 5 CASEs should not use jump tables? Greetings Raphael Neider and Daniel Winkler ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1057478&group_id=599 |