extern ASMODE asmode;
/**
- * アセンブルのプロパティ
+ * アセンブル時の、現在およびリテラルのアドレスとプログラム入口名
*/
typedef struct {
- WORD ptr; /**<ç\8f¾å\9c¨ã\81®ã\83\9dã\82¤ã\83³ã\82¿ */
- WORD lptr; /**<ã\83ªã\83\86ã\83©ã\83«ï¼\88=ä»\98ã\81\8dã\81®å\80¤ï¼\89ã\82\92æ ¼ç´\8dã\81\99ã\82\8bã\83\9dã\82¤ã\83³ã\82¿ */
+ WORD ptr; /**<ç\8f¾å\9c¨ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ */
+ WORD lptr; /**<ã\83ªã\83\86ã\83©ã\83«ï¼\88=ä»\98ã\81\8dã\81®å\80¤ï¼\89ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ */
char *prog; /**<他のプログラムで参照する入口名 */
-} ASPROP;
+} ASPTR;
-/**
- * アセンブルのプロパティ: ptr, lptr, *prog
- */
-extern ASPROP *asprop;
-
-/**
- * アセンブラ命令を表す番号
- */
-typedef enum {
- START = 01,
- END = 02,
- DS = 03,
- DC = 04,
-} ASCMDID;
-
-/**
- * アセンブラ命令を表す配列
- */
-typedef struct {
- ASCMDID cmdid; /**<アセンブル命令のID */
- int opdc_min; /**<最小オペランド数 */
- int opdc_max; /**<最大オペランド数 */
- char *cmd; /**<コマンド名 */
-} ASCMD;
-
-/**
- * マクロ命令を表す番号
- */
-typedef enum {
- IN = 011,
- OUT = 012,
- RPUSH = 013,
- RPOP = 014,
-} MACROCMDID;
-
-/**
- * マクロ命令を表す配列
- */
-typedef struct {
- MACROCMDID cmdid; /**<アセンブル命令のID */
- int opdc_min; /**<最小オペランド数 */
- int opdc_max; /**<最大オペランド数 */
- char *cmd; /**<コマンド名 */
-} MACROCMD;
+extern ASPTR *asptr;
/**
* ラベル配列
SECOND = 1,
} PASS;
+/**
+ * ラベルのエラーをエラーリストに追加
+ */
+void addcerrlist_label();
+
/**
* プログラム名とラベルに対応するアドレスをラベル表から検索する
*/
/**
* 指定された名前のファイルをアセンブル
- * 2回実行される
+ * 1回目ではラベルを登録し、2回目ではラベルからアドレスを読み込む
+ * アセンブル完了時はtrue、エラー発生時はfalseを返す
*/
-bool assemble(const char *file, PASS pass);
+bool assemblefile(const char *file, PASS pass);
/**
* 引数で指定したファイルにアセンブル結果を書込