1 #ifndef YACASL2_ASSEMBLE_INCLUDED
2 #define YACASL2_ASSEMBLE_INCLUDED
12 LABELSIZE = 8, /**<ラベルの最大文字数 */
13 OPDSIZE = 40, /**<オペラントの最大数。CASL IIシミュレータの制限 */
20 LINESIZE = 1024, /**<行の最大文字数 */
21 TOKENSIZE = 256, /**<トークンの最大文字数 */
28 bool src; /**<ソースを表示する場合はtrue */
29 bool label; /**<ラベル表を表示する場合はtrue */
30 bool onlylabel; /**<ラベル表を表示して終了する場合はtrue */
31 bool asdetail; /**<アセンブラ詳細結果を表示する場合はtrue */
32 bool onlyassemble; /**<アセンブルだけを行う場合はtrue */
38 * アセンブル時の、現在およびリテラルのアドレスとプログラム入口名
41 WORD ptr; /**<現在のアドレス */
42 WORD lptr; /**<リテラル(=付きの値)のアドレス */
43 char *prog; /**<他のプログラムで参照する入口名 */
52 char *prog; /**<プログラム */
53 char *label; /**<ラベル */
60 typedef struct _LABELTAB {
61 struct _LABELTAB *next; /**<リスト次項目へのポインタ */
62 char *prog; /**<プログラム名 */
63 char *label; /**<ラベル名 */
85 void addcerrlist_label();
88 * プログラム名とラベルに対応するアドレスをラベル表から検索する
90 WORD getlabel(const char *prog, const char *label);
93 * プログラム名、ラベル、アドレスをラベル表に追加する
95 bool addlabel(const char *prog, const char *label, WORD word);
111 int opdc; /**<オペランド数 */
112 char *opdv[OPDSIZE]; /**<オペランド配列 */
119 char *label; /**<ラベル */
120 char *cmd; /**<コマンド */
121 OPD *opd; /**<オペランド */
127 void addcerrlist_tok();
130 * 空白またはタブで区切られた1行から、トークンを取得する
132 CMDLINE *linetok(const char *line);
137 void addcerrlist_assemble();
141 * 1回目ではラベルを登録し、2回目ではラベルからアドレスを読み込む
142 * アセンブル完了時はtrue、エラー発生時はfalseを返す
144 bool assemblefile(const char *file, PASS pass);
147 * 引数で指定したファイルにアセンブル結果を書込
149 void outassemble(const char *file);
151 #endif /* YACASL2_ASSEMBLE_INCLUDEDの終端 */