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 パブリックドメイン