forked from IchigoJam/asm15
-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.html
153 lines (144 loc) · 8.06 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>asm15 assembler for IchigoJam / IchigoLatte</title>
<meta property="og:image" content="asm15.png">
<link rel="apple-touch-icon" href="asm15.png"/>
<script src="asm15.js"></script>
<script src="asm15output.js"></script>
<!--<script src="asm15_example.js"></script>-->
<style>
body {
font-family: sans-serif;
}
li {
padding: 0.5em;
}
</style>
</head><body>
<h1>asm15 assembler for IchigoJam / IchigoLatte</h1>
<h3>SRC</h3>
<div>
<select name="selex" id="selex" onchange="example();">
<option value="">Select Example</option>
<option value="LOOP">LOOP</option>
<option value="PEEKPOKE">PEEK POKE</option>
<option value="BYTE_WORD_LONG">BYTE WORD LONG</option>
<option value="LED">LED</option>
<option value="CALL">CALL</option>
<option value="RET">RET</option>
<option value="BIGSCREEN">BIGSCREEN</option>
<option value="CALC32">CALC32</option>
<option value="LDM">LDM</option>
<option value="STM">STM</option>
</select>
</div>
<div>
<textarea id="textarea1" style="width:80%;height:30em;word-break: break-all;">
</textarea>
</div>
<input id="submit-button" value="assemble" type="button" onclick="assemble();">
<script>
window.onload = function() {
var hash = document.location.hash;
if (hash.length > 1) {
hash = hash.substring(1);
document.getElementById("selex").value = hash;
example();
}
assemble();
};
</script>
<h3>BIN</h3>
<select name="selfmt" id="selfmt" onchange="assemble();">
<option value="bas10">bas (dec)</option>
<option value="bas2">bas (bin)</option>
<option value="bas16">bas (hex)</option>
<option value="basar2">bas (array bin)</option>
<option value="basar16">bas (array hex)</option>
<option value="bin">binary</option>
<option value="latte">for IchigoLatte</option>
<option value="c">for C language</option>
<option value="hex">hex file</option>
<option value="mot">mot file</option>
</select>
start address <input name="txtadr" id="txtadr" value="0x700">
size <span id="binsize">-</span>
<div>
<textarea id="textarea2" style="width:80%;height:15em;word-break: break-all;"></textarea>
</div>
<h3>疑似命令</h3>
<div>
<dl>
<dt>@文字列</dt>
<dd>ラベルを設定する。ラベルはGOTOの飛び先などに使用可能である。</dd>
<dt>'文字列 / REM 文字列</dt>
<dd>コメントを入れる。コメントは他の命令がある行につけることもできるが、DATA系の行にはつけられない。</dd>
<dt>DATA[B|W|L] データ(列)</dt>
<dd>4バイト単位にアライメントした後、指定したデータ(整数)を出力する。データ列はコンマで区切る。
DATA/DATABは1バイトずつ、DATAWは2バイトずつ、DATALは4バイトずつである。</dd>
<dt>UDATA[B|W|L] データ(列)</dt>
<dd>DATAと同様に指定したデータ(整数)を出力するが、アライメントは行わない。</dd>
<dt>(I|D)ADDR(W|L) @文字列</dt>
<dd>指定したラベルのアドレスをデータとして出力する。アライメントはしない。
Iは命令用(命令セットがM0の時、LSBを1にする)、Dはデータ用。Wは2バイト、Lは4バイト。</dd>
<dt>MODE (M0|RV32C)</dt>
<dd>命令セットを切り替える。デフォルトはM0である。</dd>
<dt>IF M0 GOTO @文字列</dt>
<dd>命令セットがM0の時はジャンプし、RV32Cのときは素通りする命令を出力する。
副作用として、命令セットがM0のときはフラグレジスタの値が、RV32CのときはR31レジスタの値が破壊される。<br>
(参考:<a href="https://qiita.com/mikecat_mixc/items/5c14111e8f144d16b4fa">これまでの(LPC1114を用いた) IchigoJam と IchigoJam R 両対応のマシン語 - Qiita</a>)</dd>
<dt>ORG 値</dt>
<dd>出力位置(アドレス)を設定する。</dd>
<dt>ORGR 値</dt>
<dd>出力位置(アドレス)をstart addressとの差分で設定する。</dd>
<dt>ALIGN 割る値[, 余り[, 埋める値]]</dt>
<dd>出力位置(アドレス)を進め、「割る値」で割った余りが「余り」になるように調整する。
「余り」を省略した場合は余りが0になるようにする。
「埋める値」を指定した場合、出力位置が条件を満たすまでその値(2バイト)で埋める。</dd>
<dt>ALIGNR 割る値[, 余り[, 埋める値]]</dt>
<dd>出力位置の代わりに「出力位置(アドレス)とstart addressの差分」をALIGNと同様に調整する。</dd>
<dt>SPACE 増分[, 埋める値]</dt>
<dd>出力位置(アドレス)を指定した「増分」バイト進める。
「埋める値」を指定した場合、出力位置が条件を満たすまでその値(2バイト)で埋める。</dd>
</dl>
</div>
<h3>IchigoJam Armマシン語解説ページ</h3>
<div>
<ul>
<li>参考<br>
<a href="armasm.html">Cortex-M0 ARMマシン語表(抜粋)</a><br>
<a href="rvasm.html">RV32C RISC-Vマシン語表 (asm15r、抜粋)</a><br>
<a href="cpuemu.html">IchigoJam マシン語エミュレーター on web</a>(2進数表記をコピペで一部対応、<a href="https://fukuno.jig.jp/1328">説明</a>)<br>
<a href="disasm15.html">asm15対応逆アセンブラ</a>
</li>
<li>連載、IchigoJamではじめる、ARMマシン語入門<br>
<a href=https://fukuno.jig.jp/1184>1. はじめてのマシン語</a><br>
<a href=https://fukuno.jig.jp/1186>2. ハンドアセンブルで超速計算!</a><br>
<a href=https://fukuno.jig.jp/1188>3. マシン語メモリアクセスで画面超速表示!</a><br>
<a href=https://fukuno.jig.jp/1476>4. マシン語でLEDを光らせよう!</a><br>
<a href=https://fukuno.jig.jp/1479>5. 楽しさ広がるマルチバイトメモリアクセスとスタック</a><br>
<a href=https://fukuno.jig.jp/1484>6. マシン語使いこなしTIPS</a><br>
<a href=https://fukuno.jig.jp/1485>7. カジュアルに使うインラインマシン語</a><br>
<a href=https://fukuno.jig.jp/1757>8. アセンブラを使って楽しよう</a><br>
<a href=https://fukuno.jig.jp/1849>9. マシン語で高速SPI</a><br>
<a href=https://fukuno.jig.jp/1872>10. マシン語を制するもの時間を制す</a><br>
<a href=https://fukuno.jig.jp/1889>11. 画面をイチゴで埋め尽くす12の方法</a><br>
<a href=https://fukuno.jig.jp/2035>12. レジスタ不足に上位レジスタとスタック操作</a><br>
<a href=https://fukuno.jig.jp/2493>13. コンパイラはじめのいっぽ、EVAL実現法とマシン語生成</a><br>
<a href=https://fukuno.jig.jp/2494>14. サイズを取るかスピードを取るか、割り算のアルゴリズムとマシン語実装</a><br>
<a href=https://fukuno.jig.jp/2495>15. マシン語化で1万倍速!? セットで学ぶアルゴリズムとコンピューター</a><br>
<a href=https://fukuno.jig.jp/2942>16. フラグ活用テクニック、オールマシン語74byteで作る「かわくだりゲーム」</a><br>
</li>
<li>応用例<br>
<a href="https://fukuno.jig.jp/1748">マシン語で赤外線リモコン機能を追加してレゴのロボットを制御</a><br>
<a href="https://fukuno.jig.jp/1871">最大512chの照明コントロール!照明界の標準DMX512 x IchigoJam</a><br>
<a href="https://fukuno.jig.jp/2018">FFF?40F?16進数3桁で色を決めよう、WS2812BのIchigoJam用マシン語ドライバで電光掲示!</a><br>
<a href="https://fukuno.jig.jp/2022">IchigoJamの画面からダイレクトであやつる、256色カラー32x8電光掲示板!Armマシン語ジグザグドライバ for WS2812B</a><br>
<a href="https://fukuno.jig.jp/2498">オールマシン語かわくだり - API対応 IchigoJam 1.3.2β12</a><br>
</li>
</ul>
</div>
Base App: by <a href=http://d.hatena.ne.jp/boxheadroom/20160306>BoxHeadRoom</a> / <a href=http://tagiyasoft.blog.jp/archives/6538415.html>tagiyasoft</a> / <a href=https://fukuno.jig.jp/>fukuno.jig.jp</a><br>
Src on <a href="https://github.com/mikecat/asm15">GitHub</a><br>
Original Src on <a href=https://github.com/IchigoJam/asm15/>GitHub@IchigoJam</a><br>
License: <a href="https://creativecommons.org/publicdomain/zero/1.0/deed.ja">CC0 パブリックドメイン</a><br>
</body></html>