]> git.gag.com Git - fw/sdcc/blobdiff - src/pic16/genutils.c
* .version: bumped version number to 2.4.5
[fw/sdcc] / src / pic16 / genutils.c
index 25d645cfe43cde2bc1bd6c972a1565013f1afa7e..ab5f75be5a57e5d2bfe6f5eb5c0ccdcf5ef499a8 100644 (file)
 void pic16_genNot (iCode *ic)
 {
   int size;
+//  symbol *tlbl;
 
 /*
  * result[AOP_CRY,AOP_REG]  = ! left[AOP_CRY, AOP_REG]
  */
 
        DEBUGpic16_emitcode ("; ***","%s  %d",__FUNCTION__,__LINE__);
+
        /* assign asmOps to operand & result */
        pic16_aopOp (IC_LEFT(ic),ic,FALSE);
        pic16_aopOp (IC_RESULT(ic),ic,TRUE);
@@ -94,12 +96,20 @@ void pic16_genNot (iCode *ic)
        }
 
        size = AOP_SIZE(IC_LEFT(ic));
+#if 0
        if(size == 1) {
                pic16_emitpcode(POC_COMFW,pic16_popGet(AOP(IC_LEFT(ic)),0));
                pic16_emitpcode(POC_ANDLW,pic16_popGetLit(1));
                pic16_emitpcode(POC_MOVWF,pic16_popGet(AOP(IC_RESULT(ic)),0));
                goto release;
        }
+#endif
+
+       pic16_toBoolean( IC_LEFT(ic) );
+       emitSETC;
+       pic16_emitpcode(POC_TSTFSZ, pic16_popCopyReg( &pic16_pc_wreg ));
+       emitCLRC;
+       pic16_outBitC( IC_RESULT(ic) );
 
 release:    
        /* release the aops */
@@ -287,6 +297,8 @@ void pic16_DumpAop(char *prefix, asmop *aop)
                DEBUGpic16_emitcode (";", " %s type:AOP_R1",prefix);
        if (aop->type == AOP_STK)
                DEBUGpic16_emitcode (";", " %s type:AOP_STK",prefix);
+       if (aop->type == AOP_STA)
+               DEBUGpic16_emitcode (";", " %s type:AOP_STA",prefix);
        if (aop->type == AOP_IMMD)
        {
                DEBUGpic16_emitcode (";", " %s type:AOP_IMMD",prefix);