X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=include%2Fassemble.h;h=eb0ab28b48f1e547e2580e83a1088cab4de46fba;hp=4e9203afe06f5e27bd71d1d8e61729700feea2eb;hb=7d5e10034319b163596c9f5930e333fc87043271;hpb=406fd6490ad76b4573b6ce9f8d322d92f13d27d8 diff --git a/include/assemble.h b/include/assemble.h index 4e9203a..eb0ab28 100644 --- a/include/assemble.h +++ b/include/assemble.h @@ -21,36 +21,49 @@ typedef struct { bool asdetail; /* アセンブラ詳細結果を表示する場合はtrue */ bool onlyassemble; /* アセンブルだけを行う場合はtrue */ } ASMODE; -extern ASMODE asmode; -/* 値を格納するポインタ */ -extern WORD ptr; +extern ASMODE asmode; -/* リテラル(=付きの値)を格納するポインタ */ -extern WORD lptr; +/* アセンブル時のプロパティ */ +typedef struct { + WORD ptr; /* 現在のポインタ */ + WORD lptr; /* リテラル(=付きの値)を格納するポインタ */ + char *prog; /* 他のプログラムで参照する入口名 */ +} ASPROP; -/* 他のプログラムで参照する入口名 */ -extern char *prog; +extern ASPROP *asprop; -/* アセンブラ命令とマクロ命令を表す番号 */ +/* アセンブラ命令を表す番号 */ typedef enum { START = 01, END = 02, DS = 03, DC = 04, +} ASCMDID; + +/* アセンブラ命令を表す配列 */ +typedef struct { + ASCMDID cmdid; + int opdc_min; + int opdc_max; + char *cmd; +} ASCMD; + +/* マクロ命令を表す番号 */ +typedef enum { IN = 011, OUT = 012, RPUSH = 013, RPOP = 014, -} CASLCMD; +} MACROCMDID; -/* アセンブラ命令とマクロ命令を表す配列 */ +/* マクロ命令を表す配列 */ typedef struct { - CASLCMD cmdid; + MACROCMDID cmdid; int opdc_min; int opdc_max; char *cmd; -} CMDARRAY; +} MACROCMD; /* ラベル配列 */ typedef struct { @@ -147,16 +160,16 @@ void writestr(const char *str, bool literal, PASS pass); /* アセンブラ命令DCをメモリに書込 */ void writeDC(const char *str, PASS pass); -/* 命令がアセンブラ命令の場合は処理を実行する。 - 実行に成功した場合TRUE、それ以外の場合はFALSEを返す */ +/* 命令がアセンブラ命令の場合は処理を実行する。 */ +/* 実行に成功した場合TRUE、それ以外の場合はFALSEを返す */ bool assemblecmd(const CMDLINE *cmdl, PASS pass); /* 命令のコードを返す 命令が無効な場合は0xFFFF */ WORD getcmd(CMDTYPE type, const char *cmd); -/* 命令が機械語命令の場合は処理を実行 - 実行に成功した場合TRUE、それ以外の場合はFALSEを返す */ +/* 命令が機械語命令の場合は処理を実行 */ +/* 実行に成功した場合TRUE、それ以外の場合はFALSEを返す */ bool cometcmd(const CMDLINE *cmdl, PASS pass); /* 1行のアセンブル */