1 #ifndef YACASL2_ASSEMBLE_INCLUDED
2 #define YACASL2_ASSEMBLE_INCLUDED
20 * @brief アセンブルモードを表すデータ型
23 bool src; /**<ソースを表示する場合はtrue */
24 bool label; /**<ラベル表を表示する場合はtrue */
25 bool onlylabel; /**<ラベル表を表示して終了する場合はtrue */
26 bool asdetail; /**<アセンブラ詳細結果を表示する場合はtrue */
27 bool onlyassemble; /**<アセンブルだけを行う場合はtrue */
31 * @brief アセンブルモード: src, label, onlylabel, asdetail, onlyassemble
36 * @brief アセンブル時の現在およびリテラルのアドレスとプログラム入口名を表すデータ型
39 WORD ptr; /**<現在のアドレス */
40 WORD lptr; /**<リテラル(=付きの値)のアドレス */
41 char *prog; /**<他のプログラムで参照する入口名 */
45 * @brief アセンブル時の、現在およびリテラルのアドレスとプログラム入口名: ptr, lptr, prog
53 char *prog; /**<プログラム */
54 char *label; /**<ラベル */
61 typedef struct _LABELTAB {
62 struct _LABELTAB *next; /**<リスト次項目へのポインタ */
63 LABELARRAY *label; /**<ラベル配列 */
70 LABELTABSIZE = 251, /**<ラベル表のサイズ */
74 * @brief アセンブラが、1回目か2回目かを表す数値
77 FIRST = 0, /**<アセンブラ1回目 */
78 SECOND = 1, /**<アセンブラ2回目 */
82 * @brief ラベルのエラーをエラーリストに追加する
86 void addcerrlist_label();
89 * @brief プログラム名とラベルに対応するアドレスをラベル表から検索する
91 * @return プログラム名とラベルに対応するアドレス
96 WORD getlabel(const char *prog, const char *label);
99 * @brief プログラム名、ラベル、アドレスをラベル表に追加する
101 * @return 追加に成功した時はtrue、失敗した時はfalse
103 * @param *prog プログラム名
107 bool addlabel(const char *prog, const char *label, WORD adr);
124 * @brief アセンブルエラーをエラーリストに追加する
128 void addcerrlist_assemble();
131 * @brief 指定された名前のファイルをアセンブル\n
133 * 1回目ではラベルを登録し、2回目ではラベルからアドレスを読み込む
135 * @return アセンブル完了時はtrue、エラー発生時はfalseを返す
138 * @param pass アセンブラが何回目かを表す数
140 bool assemblefile(const char *file, PASS pass);
143 * @brief 指定された1つまたは複数のファイルを2回アセンブル
145 * @return アセンブル完了時はtrue、エラー発生時はfalseを返す
147 * @param filec アセンブルするファイルの数
148 * @param filev アセンブルするファイル名の配列
149 * @param adr アセンブル結果を格納するアドレス
151 bool assemble(int filec, char *filev[], WORD adr);
154 * @brief ファイルにアセンブル結果を書き込む
160 void outassemble(const char *file);
162 #endif /* YACASL2_ASSEMBLE_INCLUDEDの終端 */