X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=include%2Fassemble.h;h=1a3c566541016d4889b7f43d4af1e3b3ef918cb8;hp=a8780585c502e6b8005b99ff38ad7afa981e9a25;hb=60d4c2573a30a48520545195b9ef89814fc60708;hpb=7f7bde5dd1305cfc598fe09030c69aad0dc01368 diff --git a/include/assemble.h b/include/assemble.h index a878058..1a3c566 100644 --- a/include/assemble.h +++ b/include/assemble.h @@ -35,58 +35,15 @@ typedef struct { extern ASMODE asmode; /** - * アセンブルのプロパティ + * アセンブル時の、現在およびリテラルのアドレスとプログラム入口名 */ typedef struct { - WORD ptr; /**<現在のポインタ */ - WORD lptr; /**<リテラル(=付きの値)を格納するポインタ */ + WORD ptr; /**<現在のアドレス */ + WORD lptr; /**<リテラル(=付きの値)のアドレス */ 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; /** * ラベル配列 @@ -122,6 +79,11 @@ typedef enum { SECOND = 1, } PASS; +/** + * ラベルのエラーをエラーリストに追加 + */ +void addcerrlist_label(); + /** * プログラム名とラベルに対応するアドレスをラベル表から検索する */ @@ -159,16 +121,27 @@ typedef struct { OPD *opd; /**<オペランド */ } CMDLINE; +/** + * トークン取得のエラーを追加 + */ +void addcerrlist_tok(); + /** * 空白またはタブで区切られた1行から、トークンを取得する */ CMDLINE *linetok(const char *line); +/** + * アセンブルエラーをエラーリストに追加 + */ +void addcerrlist_assemble(); + /** * 指定された名前のファイルをアセンブル - * 2回実行される + * 1回目ではラベルを登録し、2回目ではラベルからアドレスを読み込む + * アセンブル完了時はtrue、エラー発生時はfalseを返す */ -bool assemble(const char *file, PASS pass); +bool assemblefile(const char *file, PASS pass); /** * 引数で指定したファイルにアセンブル結果を書込