projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
変数名の整理
[YACASL2.git]
/
include
/
assemble.h
diff --git
a/include/assemble.h
b/include/assemble.h
index
ae746fd
..
deb83eb
100644
(file)
--- a/
include/assemble.h
+++ b/
include/assemble.h
@@
-1,13
+1,16
@@
#ifndef YACASL2_ASSEMBLE_INCLUDED
#define YACASL2_ASSEMBLE_INCLUDED
#ifndef YACASL2_ASSEMBLE_INCLUDED
#define YACASL2_ASSEMBLE_INCLUDED
-/* CASL IIの制限 */
+/* CASL IIの仕様 */
+enum {
+ LABELSIZE = 8, /* ラベルの最大文字数 */
+ OPDSIZE = 40, /* オペラントの最大数。CASL IIシミュレータの制限 */
+};
+
+/* YACASL2の制限 */
enum {
LINESIZE = 1024, /* 行の最大文字数 */
TOKENSIZE = 256, /* トークンの最大文字数 */
enum {
LINESIZE = 1024, /* 行の最大文字数 */
TOKENSIZE = 256, /* トークンの最大文字数 */
- LABELSIZE = 8, /* ラベルの最大文字数 */
- LABELTABSIZE = 256, /* ラベルの最大数 */
- OPDSIZE = 40, /* オペラントの最大数 */
};
/* アセンブルモード */
};
/* アセンブルモード */
@@
-18,16
+21,17
@@
typedef struct {
bool asdetail; /* アセンブラ詳細結果を表示する場合はtrue */
bool onlyassemble; /* アセンブルだけを行う場合はtrue */
} ASMODE;
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 {
/* アセンブラ命令とマクロ命令を表す番号 */
typedef enum {
@@
-49,6
+53,13
@@
typedef struct {
char *cmd;
} CMDARRAY;
char *cmd;
} CMDARRAY;
+/* ラベル配列 */
+typedef struct {
+ char *prog;
+ char *label;
+ WORD adr;
+} LABELARRAY;
+
/* ラベル表 */
typedef struct _LABELTAB {
struct _LABELTAB *next;
/* ラベル表 */
typedef struct _LABELTAB {
struct _LABELTAB *next;
@@
-57,12
+68,19
@@
typedef struct _LABELTAB {
WORD adr;
} LABELTAB;
WORD adr;
} LABELTAB;
+enum {
+ LABELTABSIZE = 251, /* ラベル表のサイズ */
+};
+
/* アセンブラが、1回目か、2回目か、を表す */
typedef enum {
FIRST = 0,
SECOND = 1,
} PASS;
/* アセンブラが、1回目か、2回目か、を表す */
typedef enum {
FIRST = 0,
SECOND = 1,
} PASS;
+/* アセンブルのエラー定義 */
+bool addcerrlist_assemble();
+
/* プログラム名とラベルに対応するハッシュ値を返す */
unsigned labelhash(const char *prog, const char *label);
/* プログラム名とラベルに対応するハッシュ値を返す */
unsigned labelhash(const char *prog, const char *label);