石原 博の覚書

電子工作に関する日々の覚書を記載します

FlashForthのアセンブル(3)

2021-10-13 15:39:55 | 日記

Arduino pro mini上でFlashForthを使ってマルチタスクの実験をしたが、hexファイルの書き込みでインストールしている。

しかしやはりソースからアセンブルしたい。 (FlashForthのアセンブル(2)よりの続き)

 

 なぜかビルドした結果のHexファイルと付属のHexが一致しない。

 なにが起きているのか確認するため、MAPLABの逆アセンブラを使ってみる。

  File > Import > Hex/ELFで該当のHexファイルを読み込み、Windows > Target memory views  > Program Memory

出来た結果はファイルに出せる

 

 

 ビルドしたHexファイルと、付属しているHexファイルを逆アセンブルしてdiffした。

   しかし逆アセンブルした結果が1行目から変。本来JMPは4バイト命令のはずだが。 MAPLABのバグか? 

 

 JMPは4バイトなので、後ろのADD R21, R5などはおかしい。


 無いよりましだけど、あまりあてにならない。(FlashForthを調べるどころではないなあ)


[5]それでもあれやこれや調べると、ff-xc8.asmの以下の「call FETCH」を「rcall FETCH」としてビルドすれば、付属のHexファイルと一致することがわかった。

===ff-xc8.asm 3014行より ここの call FETCHを rcall FETCHに変更========
F_LFA_FETCH:
        call    FETCH      ; c-addr nfa
        cbr     FLAGS2, (1<<fFIND)
findi2:
        sbiw    tosl, 0     ; c-addr nfa
        brne    findi1
        rjmp    findi3
============

これで安心して遊べる。

 



最新の画像もっと見る

コメントを投稿