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 */
41 WORD ptr; /**<現在のポインタ */
42 WORD lptr; /**<リテラル(=付きの値)を格納するポインタ */
43 char *prog; /**<他のプログラムで参照する入口名 */
47 * アセンブルのプロパティ: ptr, lptr, *prog
49 extern ASPROP *asprop;
65 ASCMDID cmdid; /**<アセンブル命令のID */
66 int opdc_min; /**<最小オペランド数 */
67 int opdc_max; /**<最大オペランド数 */
68 char *cmd; /**<コマンド名 */
85 MACROCMDID cmdid; /**<アセンブル命令のID */
86 int opdc_min; /**<最小オペランド数 */
87 int opdc_max; /**<最大オペランド数 */
88 char *cmd; /**<コマンド名 */
95 char *prog; /**<プログラム */
96 char *label; /**<ラベル */
103 typedef struct _LABELTAB {
104 struct _LABELTAB *next; /**<リスト次項目へのポインタ */
105 char *prog; /**<プログラム名 */
106 char *label; /**<ラベル名 */
107 WORD adr; /**<アドレス */
126 * プログラム名とラベルに対応するアドレスをラベル表から検索する
128 WORD getlabel(const char *prog, const char *label);
131 * プログラム名、ラベル、アドレスをラベル表に追加する
133 bool addlabel(const char *prog, const char *label, WORD word);
149 int opdc; /**<オペランド数 */
150 char *opdv[OPDSIZE]; /**<オペランド配列 */
157 char *label; /**<ラベル */
158 char *cmd; /**<コマンド */
159 OPD *opd; /**<オペランド */
163 * 空白またはタブで区切られた1行から、トークンを取得する
165 CMDLINE *linetok(const char *line);
171 bool assemble(const char *file, PASS pass);
174 * 引数で指定したファイルにアセンブル結果を書込
176 void outassemble(const char *file);
178 #endif /* YACASL2_ASSEMBLE_INCLUDEDの終端 */