create every day - 福野泰介の一日一創

LPC1114マシン語ベアメタル開発の魅力、プログラミングも世界共通語!

2017/10/21 23:55:00
#IchigoJam #asm 

たった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の方法

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image