SSブログ
English Version

PIC用コンパイラCC5Xのバグ [PIC]

 最近趣味の時間が取れるようになったので赤外線コントローラをいじっています。
生成コードサイズがFreeバージョンの上限の1KBを超えたのでソースを分割し、リロケータブルにしてからリンクするようにしました。
 以前、電源電圧電流モニタを作成した時にもやったことなのですんなり行くかと思ったが動かない・・・・^^;

 原因はコンパイラのバグでした。orz
Wレジスタに配列ポインタを代入すると誤った値で直値代入のコードが生成されてしまう(コンパイル時点ではアドレス解決できていないはずなのに・・・)

 最新バージョン(Ver3.3H)にしても同様で、分割コンパイルして使う人は少ないからまだバグが枯れていないのかなぁ〜
---- sample of problem ----
                     743:  ; W = &SndData[0]; // <- complier(3.3H,) bug. generated imidiate value setting
168 3043 MOVLW 0x43  744:  MOVLW .67       ← 誤った値が代入される!!
                     745:  ; FSR = W;
169 0084 MOVWF 0x4   746:  MOVWF FSR
                     747:  ; FSR = &SndData[0];
16A 302C MOVLW 0x2c  748:  MOVLW LOW(SndData+0)  ← 正しい値が代入される
16B 0084 MOVWF 0x4   749:  MOVWF FSR

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0