asm15 assembler for IchigoJam / IchigoLatte
SRC
BIN
start address
start
delta
size -
download
疑似命令
- @文字列
- ラベルを設定する。ラベルはGOTOの飛び先などに使用可能である。
- '文字列 / REM 文字列
- コメントを入れる。' を用いたコメントは他の命令がある行につけることもできる。
- DATA[B|W|L] データ(列)
- 4バイト単位にアライメントした後、指定したデータを出力する。データ列はコンマで区切る。
DATA/DATABは1バイトずつ、DATAWは2バイトずつ、DATALは4バイトずつである。
データは整数または文字列 ("" で囲む) で指定する。文字列は UTF-8 の各バイトに展開される。
- UDATA[B|W|L] データ(列)
- DATAと同様に指定したデータを出力するが、アライメントは行わない。
- (I|D)ADDR(W|L) @文字列
- 指定したラベルのアドレスをデータとして出力する。アライメントは行わない。
Iは命令用(命令セットがM0の時、LSBを1にする)、Dはデータ用。Wは2バイト、Lは4バイト。
- CHECKSUM 対象開始アドレス, 対象バイト数, 種類[, デフォルト値]
- 対象範囲のチェックサムを求め、出力する。アライメントは行わない。「デフォルト値」が指定されている場合、値が未定義のバイトの値として用いる。
種類は「LSUM2COMP」(4バイトずつ足した和の2の補数)・「CRC32」(CRC-32)・「CRC32MPEG2」(CRC32_MPEG2) のいずれかを指定する。
- CHECKSUMR 対象開始位置, 対象バイト数, 種類[, デフォルト値]
- CHECKSUM と同様にチェックサムを出力する。対象範囲の開始位置を start address との差分で設定する。
- MODE (M0|RV32C)
- 命令セットを切り替える。デフォルトはM0である。
- IF M0 GOTO @文字列
- 命令セットがM0の時はジャンプし、RV32Cのときは素通りする命令を出力する。
副作用として、命令セットがM0のときはフラグレジスタの値が、RV32CのときはR31レジスタの値が破壊される。
(参考:これまでの(LPC1114を用いた) IchigoJam と IchigoJam R 両対応のマシン語 - Qiita)
- ORG 値
- 出力位置(アドレス)を設定する。
- ORGR 値
- 出力位置(アドレス)をstart addressとの差分で設定する。
- ALIGN 割る値[, 余り[, 埋める値]]
- 出力位置(アドレス)を進め、「割る値」で割った余りが「余り」になるように調整する。
「余り」を省略した場合は余りが0になるようにする。
「埋める値」を指定した場合、出力位置が条件を満たすまでその値(2バイト)で埋める。
- ALIGNR 割る値[, 余り[, 埋める値]]
- 出力位置の代わりに「出力位置(アドレス)とstart addressの差分」をALIGNと同様に調整する。
- SPACE 増分[, 埋める値]
- 出力位置(アドレス)を指定した「増分」バイト進める。
「埋める値」を指定した場合、出力位置が条件を満たすまでその値(2バイト)で埋める。
- UF2FAMILY 値
- uf2 形式での出力時、以降のデータを family ID を指定の値に設定したブロックに出力する。
- UF2FAMILY NONE
- uf2 形式での出力時、以降のデータを family ID を設定していないブロックに出力する。
- UF2BLOCK ブロックサイズ[, セクタサイズ], 埋める値
- uf2 形式での出力時、以降のデータを指定サイズのブロック単位で出力する。値が未定義のバイトは「埋める値」を出力する。
セクタサイズを指定した場合、各セクタのデータが揃うよう、必要に応じて空ブロックを出力する。
ブロックサイズ・セクタサイズともにバイト数で指定する。セクタサイズはブロックサイズの整数倍でなければならない。
- UF2BLOCK NONE
- uf2 形式での出力時、以降のデータをバイト単位で出力する。
IchigoJam Armマシン語解説ページ
Base App: by BoxHeadRoom / tagiyasoft / fukuno.jig.jp
Src on GitHub
Original Src on GitHub@IchigoJam
License: CC0 パブリックドメイン