2017-10-21
たった28byteから始めるマシン語アプリ開発」でエルチカがうまくいかない謎が解けました。
4byteの数値が続くヘッダの8番目「Criterion for valid user code」の不備でした。(Thanks Amaganagi-san

ということで、LED1に相当するマシン語の最小コード改はこのコードを含めた32byteとなります。

DATA L #10001000 DATA L #00000009 R1=[@GPIO1DIR]L R0=`100000 [R1]=R0 R1=[@LED]L [R1]L=R0 GOTO 0 @GPIO1DIR DATA L #50018000 @LED ' PIO1_5 DATA L #50010080 @VALID_USER_CODE DATA L #FEDC5665

命令byteが20byteを超える場合は、次のように記述します。

DATA L #10001000 DATA L #00000021 DATA L 0,0,0,0,0 DATA L #EFFFEFDF R1=[@GPIO1DIR]L R0=`100000 [R1]L=R0 R2=0 R7=[@WAITCNT]L R1=[@LED]L @LOOP [R1]L=R0 R6=R7 R6-=1 IF !0 GOTO -1 [R1]L=R2 R6=R7 R6-=1 IF !0 GOTO -1 GOTO @LOOP @GPIO1DIR DATA L #50018000 @LED ' PIO1_5 DATA L #50010080 @WAITCNT DATA L 3000000

VALID_CODEは、hex(0x100000000-0x10001000-0x21) = 0xEFFFEFDF と計算します。
これで心置きなくマシン語でプログラミングできそうです!

夜中の帰国となり、大阪泊、オーストラリアから来ていたプログラマーの人に会いました。
LPC1114の開発に興味津々、C言語/マシン語でのベアメタル開発、楽しさを紹介!

世界に広がるPCN、音楽と同じようにプログラミングも世界共通語になりそうです!

大阪、道頓堀近く、HOLTEL HYAKU にて!

- 連載、IchigoJamではじめる、Armマシン語入門
1. はじめてのマシン語
2. ハンドアセンブルで超速計算!
3. マシン語メモリアクセスで画面超速表示!
4. マシン語でLEDを光らせよう!
5. 楽しさ広がるマルチバイトメモリアクセスとスタック
6. マシン語使いこなしTIPS
7. カジュアルに使うインラインマシン語
8. アセンブラを使って楽しよう
9. マシン語で高速SPI
10. マシン語を制するもの時間を制す
11. 画面をイチゴで埋め尽くす12の方法
12. レジスタ不足に上位レジスタとスタック操作
13. コンパイラはじめのいっぽ、EVAL実現法とマシン語生成
14. サイズを取るかスピードを取るか、割り算のアルゴリズムとマシン語実装
15. マシン語化で1万倍速!? セットで学ぶアルゴリズムとコンピューター

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS