From: SourceForge.net <no...@so...> - 2004-05-14 17:20:38
|
Bugs item #954098, was opened at 2004-05-14 10:20 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=954098&group_id=599 Category: pic14 target Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: genCast problem when destination is a pointer Initial Comment: genCast dosn't handle pointers properly when assigning the converted value using popGet(AOP(result),offset i think is wrong because your using pointers here. this only applies when assiging to a pointer eg. int i; i = 350; *fred = (byte) (i<<8); I believe this code is the culprit. If assigning a value to where pointer is pointing. It dosn't incrament it. in file pic/gen.c } else { /* if they in different places then copy */ size = AOP_SIZE(result); offset = 0 ; while (size--) { emitpcode(POC_MOVFW, popGet(AOP (right),offset)); emitpcode(POC_MOVWF, popGet(AOP (result),offset)); //aopPut(AOP(result), // aopGet(AOP(right),offset,FALSE,FALSE), // offset); offset++; } ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&group_id=599 |
From: SourceForge.net <no...@so...> - 2004-05-14 18:08:55
|
Bugs item #954098, was opened at 2004-05-14 10:20 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&group_id=599 Category: pic14 target Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: genCast problem when destination is a pointer Initial Comment: genCast dosn't handle pointers properly when assigning the converted value using popGet(AOP(result),offset i think is wrong because your using pointers here. this only applies when assiging to a pointer eg. int i; i = 350; *fred = (byte) (i<<8); I believe this code is the culprit. If assigning a value to where pointer is pointing. It dosn't incrament it. in file pic/gen.c } else { /* if they in different places then copy */ size = AOP_SIZE(result); offset = 0 ; while (size--) { emitpcode(POC_MOVFW, popGet(AOP (right),offset)); emitpcode(POC_MOVWF, popGet(AOP (result),offset)); //aopPut(AOP(result), // aopGet(AOP(right),offset,FALSE,FALSE), // offset); offset++; } ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 11:08 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&group_id=599 |
From: SourceForge.net <no...@so...> - 2004-05-14 18:09:43
|
Bugs item #954098, was opened at 2004-05-14 10:20 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&group_id=599 Category: pic14 target Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: genCast problem when destination is a pointer Initial Comment: genCast dosn't handle pointers properly when assigning the converted value using popGet(AOP(result),offset i think is wrong because your using pointers here. this only applies when assiging to a pointer eg. int i; i = 350; *fred = (byte) (i<<8); I believe this code is the culprit. If assigning a value to where pointer is pointing. It dosn't incrament it. in file pic/gen.c } else { /* if they in different places then copy */ size = AOP_SIZE(result); offset = 0 ; while (size--) { emitpcode(POC_MOVFW, popGet(AOP (right),offset)); emitpcode(POC_MOVWF, popGet(AOP (result),offset)); //aopPut(AOP(result), // aopGet(AOP(right),offset,FALSE,FALSE), // offset); offset++; } ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 11:09 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 11:08 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&group_id=599 |
From: SourceForge.net <no...@so...> - 2004-05-14 18:10:06
|
Bugs item #954098, was opened at 2004-05-14 10:20 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&group_id=599 Category: pic14 target Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: genCast problem when destination is a pointer Initial Comment: genCast dosn't handle pointers properly when assigning the converted value using popGet(AOP(result),offset i think is wrong because your using pointers here. this only applies when assiging to a pointer eg. int i; i = 350; *fred = (byte) (i<<8); I believe this code is the culprit. If assigning a value to where pointer is pointing. It dosn't incrament it. in file pic/gen.c } else { /* if they in different places then copy */ size = AOP_SIZE(result); offset = 0 ; while (size--) { emitpcode(POC_MOVFW, popGet(AOP (right),offset)); emitpcode(POC_MOVWF, popGet(AOP (result),offset)); //aopPut(AOP(result), // aopGet(AOP(right),offset,FALSE,FALSE), // offset); offset++; } ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 11:10 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 11:09 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 11:08 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&group_id=599 |
From: SourceForge.net <no...@so...> - 2005-07-22 21:12:12
|
Bugs item #954098, was opened at 2004-05-14 17:20 Message generated for change (Comment added) made by tecodev You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&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: unreproducable >Status: Closed >Resolution: Works For Me Priority: 5 Submitted By: Nobody/Anonymous (nobody) >Assigned to: Raphael Neider (tecodev) Summary: genCast problem when destination is a pointer Initial Comment: genCast dosn't handle pointers properly when assigning the converted value using popGet(AOP(result),offset i think is wrong because your using pointers here. this only applies when assiging to a pointer eg. int i; i = 350; *fred = (byte) (i<<8); I believe this code is the culprit. If assigning a value to where pointer is pointing. It dosn't incrament it. in file pic/gen.c } else { /* if they in different places then copy */ size = AOP_SIZE(result); offset = 0 ; while (size--) { emitpcode(POC_MOVFW, popGet(AOP (right),offset)); emitpcode(POC_MOVWF, popGet(AOP (result),offset)); //aopPut(AOP(result), // aopGet(AOP(right),offset,FALSE,FALSE), // offset); offset++; } ---------------------------------------------------------------------- >Comment By: Raphael Neider (tecodev) Date: 2005-07-22 21:12 Message: Logged In: YES user_id=1115835 [Reconstructed code] works with SDCC 2.5.1 #1064. [Reconstructed code] works with SDCC 2.5.1 #1064. [Reconstructed code] works with SDCC 2.5.1 #1064. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 18:10 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 18:09 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-05-14 18:08 Message: Logged In: NO this code dosn't work word a = (word) (task); if (task_No < MAX_TASKS) { task_PCL[task_No] = (byte) a; task_PCLATH[task_No] = (byte) (a>>8); task_delay[task_No] = STOP; } this code does word a = (word) (task); byte b; if (task_No < MAX_TASKS) { b = (byte) a; task_PCL[task_No] = b; // task address low byte b = (byte)(a>>8); task_PCLATH[task_No] = b; // task address hi byte task_delay[task_No] = STOP; } casts don't work when used with arrays ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=954098&group_id=599 |