YACASL2
assemble.h
Go to the documentation of this file.
1 #ifndef YACASL2_ASSEMBLE_H_INCLUDED
2 #define YACASL2_ASSEMBLE_H_INCLUDED
3 
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7 #include <stdbool.h>
8 #include <ctype.h>
9 #include <assert.h>
10 #include <errno.h>
11 #include "cerr.h"
12 #include "struct.h"
13 #include "token.h"
14 
18 typedef struct {
19  bool src;
20  bool label;
21  bool onlylabel;
22  bool asdetail;
23  bool onlyassemble;
24 } ASMODE;
25 
29 extern ASMODE asmode;
30 
34 typedef struct {
37  char *prog;
38 } ASPTR;
39 
43 extern ASPTR *asptr;
44 
48 typedef struct {
49  char *prog;
50  char *label;
52 } LABELARRAY;
53 
57 typedef struct _LABELTAB {
58  struct _LABELTAB *next;
61 
65 enum {
66  LABELTABSIZE = 251,
67 };
68 
72 typedef enum {
73  FIRST = 0,
74  SECOND = 1,
75 } PASS;
76 
82 void addcerrlist_label();
83 
92 WORD getlabel(const char *prog, const char *label);
93 
103 bool addlabel(const char *prog, const char *label, WORD adr);
104 
110 void printlabel();
111 
117 void freelabel();
118 
124 void addcerrlist_assemble();
125 
136 bool assemblefile(const char *file, PASS pass);
137 
147 bool assemble(int filec, char *filev[], WORD adr);
148 
156 void outassemble(const char *file);
157 
158 #endif
@ LABELTABSIZE
Definition: assemble.h:66
PASS
アセンブラが、1回目か2回目かを表す数値
Definition: assemble.h:72
@ FIRST
Definition: assemble.h:73
@ SECOND
Definition: assemble.h:74
void addcerrlist_label()
ラベルのエラーをエラーリストに追加する
Definition: label.c:84
bool addlabel(const char *prog, const char *label, WORD adr)
プログラム名、ラベル、アドレスをラベル表に追加する
Definition: label.c:106
void printlabel()
ラベル表を表示する
Definition: label.c:135
bool assemblefile(const char *file, PASS pass)
指定された名前のファイルをアセンブル
Definition: assemble.c:723
ASMODE asmode
アセンブルモード: src, label, onlylabel, asdetail, onlyassemble
Definition: assemble.c:312
ASPTR * asptr
アセンブル時の、現在およびリテラルのアドレスとプログラム入口名: ptr, lptr, prog
Definition: assemble.c:310
void outassemble(const char *file)
ファイルにアセンブル結果を書き込む
Definition: assemble.c:805
WORD getlabel(const char *prog, const char *label)
プログラム名とラベルに対応するアドレスをラベル表から検索する
Definition: label.c:89
void addcerrlist_assemble()
アセンブルエラーをエラーリストに追加する
Definition: assemble.c:797
bool assemble(int filec, char *filev[], WORD adr)
指定された1つまたは複数のファイルを2回アセンブル
Definition: assemble.c:751
struct _LABELTAB LABELTAB
ラベル表を表すデータ型
void freelabel()
ラベル表を解放する
Definition: label.c:158
ラベル表を表すデータ型
Definition: assemble.h:57
LABELARRAY * label
Definition: assemble.h:59
struct _LABELTAB * next
Definition: assemble.h:58
アセンブルモードを表すデータ型
Definition: assemble.h:18
bool onlylabel
Definition: assemble.h:21
bool src
Definition: assemble.h:19
bool label
Definition: assemble.h:20
bool onlyassemble
Definition: assemble.h:23
bool asdetail
Definition: assemble.h:22
アセンブル時の現在およびリテラルのアドレスとプログラム入口名を表すデータ型
Definition: assemble.h:34
WORD lptr
Definition: assemble.h:36
WORD ptr
Definition: assemble.h:35
char * prog
Definition: assemble.h:37
ラベル配列を表すデータ型
Definition: assemble.h:48
char * prog
Definition: assemble.h:49
WORD adr
Definition: assemble.h:51
char * label
Definition: assemble.h:50
unsigned short WORD
16ビットの数値を表すデータ型
Definition: word.h:9