From: SourceForge.net <no...@so...> - 2006-02-13 20:44:28
|
Bugs item #1430967, was opened at 2006-02-13 21:44 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=1430967&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Borut Razem (borutr) Assigned to: Nobody/Anonymous (nobody) Summary: bad pic14 code for address of parameter Initial Comment: 1 - code sample: ------------------------------- void f2(int *p1) { int t = *p1; } void f1(int p1) { f2(&p1); // <== bad asm code for address of parameter } void main (void) { f1 (0x1234); } ------------------------------- Already included in src\regression\ptrarg.c pic14 regression test 2 - sdcc command: $ sdcc -mpic14 -pp16f877 t.c 3 - sdcc version: $ sdcc --version SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.5.4 #1205 (Feb 13 2006) (MINGW32) 4 - no error message, bad code generated for f1(): _f1 ;Function start MOVF STK00,W BANKSEL r0x25 MOVWF r0x25 MOVWF STK01 MOVF r0x25,W MOVWF STK00 MOVLW 0x00 CALL _f2 RETURN ; exit point of _f1 The bigest problem is that the lo byte of the parameter is passed in STK00 and high byte in W register, so how can we get the address of parameter?! :-( Borut ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1430967&group_id=599 |
From: SourceForge.net <no...@so...> - 2006-02-14 06:29:05
|
Bugs item #1430967, was opened at 2006-02-13 21:44 Message generated for change (Settings changed) made by borutr You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1430967&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. >Category: pic14 target Group: None Status: Open Resolution: None Priority: 5 Submitted By: Borut Razem (borutr) Assigned to: Nobody/Anonymous (nobody) Summary: bad pic14 code for address of parameter Initial Comment: 1 - code sample: ------------------------------- void f2(int *p1) { int t = *p1; } void f1(int p1) { f2(&p1); // <== bad asm code for address of parameter } void main (void) { f1 (0x1234); } ------------------------------- Already included in src\regression\ptrarg.c pic14 regression test 2 - sdcc command: $ sdcc -mpic14 -pp16f877 t.c 3 - sdcc version: $ sdcc --version SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.5.4 #1205 (Feb 13 2006) (MINGW32) 4 - no error message, bad code generated for f1(): _f1 ;Function start MOVF STK00,W BANKSEL r0x25 MOVWF r0x25 MOVWF STK01 MOVF r0x25,W MOVWF STK00 MOVLW 0x00 CALL _f2 RETURN ; exit point of _f1 The bigest problem is that the lo byte of the parameter is passed in STK00 and high byte in W register, so how can we get the address of parameter?! :-( Borut ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1430967&group_id=599 |