1 #ifndef YACASL2_ASSEMBLE_H_INCLUDED
2 #define YACASL2_ASSEMBLE_H_INCLUDED
16 * @brief アセンブルモードを表すデータ型
19 bool src; /**<ソースを表示する場合はtrue */
20 bool label; /**<ラベル表を表示する場合はtrue */
21 bool onlylabel; /**<ラベル表を表示して終了する場合はtrue */
22 bool asdetail; /**<アセンブラ詳細結果を表示する場合はtrue */
23 bool onlyassemble; /**<アセンブルだけを行う場合はtrue */
27 * @brief アセンブルモード: src, label, onlylabel, asdetail, onlyassemble
32 * @brief アセンブル時の現在およびリテラルのアドレスとプログラム入口名を表すデータ型
35 WORD ptr; /**<現在のアドレス */
36 WORD lptr; /**<リテラル(=付きの値)のアドレス */
37 char *prog; /**<他のプログラムで参照する入口名 */
41 * @brief アセンブル時の、現在およびリテラルのアドレスとプログラム入口名: ptr, lptr, prog
49 char *prog; /**<プログラム */
50 char *label; /**<ラベル */
57 typedef struct _LABELTAB {
58 struct _LABELTAB *next; /**<リスト次項目へのポインタ */
59 LABELARRAY *label; /**<ラベル配列 */
66 LABELTABSIZE = 251, /**<ラベル表のサイズ */
70 * @brief アセンブラが、1回目か2回目かを表す数値
73 FIRST = 0, /**<アセンブラ1回目 */
74 SECOND = 1, /**<アセンブラ2回目 */
78 * @brief ラベルのエラーをエラーリストに追加する
82 void addcerrlist_label();
85 * @brief プログラム名とラベルに対応するアドレスをラベル表から検索する
87 * @return プログラム名とラベルに対応するアドレス
92 WORD getlabel(const char *prog, const char *label);
95 * @brief プログラム名、ラベル、アドレスをラベル表に追加する
97 * @return 追加に成功した時はtrue、失敗した時はfalse
103 bool addlabel(const char *prog, const char *label, WORD adr);
120 * @brief アセンブルエラーをエラーリストに追加する
124 void addcerrlist_assemble();
127 * @brief 指定された名前のファイルをアセンブル\n
129 * 1回目ではラベルを登録し、2回目ではラベルからアドレスを読み込む
131 * @return アセンブル完了時はtrue、エラー発生時はfalseを返す
134 * @param pass アセンブラが何回目かを表す数
136 bool assemblefile(const char *file, PASS pass);
139 * @brief 指定された1つまたは複数のファイルを2回アセンブル
141 * @return アセンブル完了時はtrue、エラー発生時はfalseを返す
143 * @param filec アセンブルするファイルの数
144 * @param filev アセンブルするファイル名の配列
145 * @param adr アセンブル結果を格納するアドレス
147 bool assemble(int filec, char *filev[], WORD adr);
150 * @brief ファイルにアセンブル結果を書き込む
156 void outassemble(const char *file);