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;
-/* ã\82¢ã\82»ã\83³ã\83\96ã\83©å\91½ä»¤ã\81¨ã\83\9eã\82¯ã\83å\91½ä»¤ã\82\92表ã\81\99ç\95ªå\8f· */
+/* アセンブラ命令を表す番号 */
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;
-/* ã\82¢ã\82»ã\83³ã\83\96ã\83©å\91½ä»¤ã\81¨ã\83\9eã\82¯ã\83å\91½ä»¤ã\82\92表ã\81\99é\85\8då\88\97 */
+/* マクロ命令を表す配列 */
typedef struct {
- CASLCMD cmdid;
+ MACROCMDID cmdid;
int opdc_min;
int opdc_max;
char *cmd;
-} CMDARRAY;
+} MACROCMD;
/* ラベル配列 */
typedef struct {
/* アセンブラ命令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行のアセンブル */