X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=include%2Fassemble.h;h=3ab7a86b0ae11cd546266afa1407788e142ab2ca;hp=09949d6e65530bc54b3d69bf367ddcba9b6c43c3;hb=7afcf780cbc7d4f2834b9ca42cca1b3754621960;hpb=85eb02b0a629caf7531b77fb59ececd15e586c2a diff --git a/include/assemble.h b/include/assemble.h index 09949d6..3ab7a86 100644 --- a/include/assemble.h +++ b/include/assemble.h @@ -1,25 +1,16 @@ -#ifndef YACASL2_ASSEMBLE_INCLUDED -#define YACASL2_ASSEMBLE_INCLUDED +#ifndef YACASL2_ASSEMBLE_H_INCLUDED +#define YACASL2_ASSEMBLE_H_INCLUDED +#include +#include +#include #include +#include +#include +#include +#include "cerr.h" #include "struct.h" -#include "word.h" - -/** - * @brief CASL IIの仕様 - */ -enum { - LABELSIZE = 8, /**<ラベルの最大文字数 */ - OPDSIZE = 40, /**<オペラントの最大数。CASL IIシミュレータの制限 */ -}; - -/** - * @brief YACASL2の制限 - */ -enum { - LINESIZE = 1024, /**<行の最大文字数 */ - TOKENSIZE = 256, /**<トークンの最大文字数 */ -}; +#include "token.h" /** * @brief アセンブルモードを表すデータ型 @@ -125,39 +116,6 @@ void printlabel(); */ void freelabel(); -/** - * @brief オペランドを表すデータ型 - */ -typedef struct { - int opdc; /**<オペランド数 */ - char *opdv[OPDSIZE]; /**<オペランド配列 */ -} OPD; - -/** - * @brief 命令行を表すデータ型 - */ -typedef struct { - char *label; /**<ラベル */ - char *cmd; /**<コマンド */ - OPD *opd; /**<オペランド */ -} CMDLINE; - -/** - * @brief トークン取得のエラーを追加する - * - * @return なし - */ -void addcerrlist_tok(); - -/** - * @brief 行から、ラベル・コマンド・オペランドを取得する - * - * @return ラベル・コマンド・オペランド - * - * @param *line 行 - */ -CMDLINE *linetok(const char *line); - /** * @brief アセンブルエラーをエラーリストに追加する * @@ -177,6 +135,17 @@ void addcerrlist_assemble(); */ bool assemblefile(const char *file, PASS pass); +/** + * @brief 指定された1つまたは複数のファイルを2回アセンブル + * + * @return アセンブル完了時はtrue、エラー発生時はfalseを返す + * + * @param filec アセンブルするファイルの数 + * @param filev アセンブルするファイル名の配列 + * @param adr アセンブル結果を格納するアドレス + */ +bool assemble(int filec, char *filev[], WORD adr); + /** * @brief ファイルにアセンブル結果を書き込む * @@ -186,4 +155,4 @@ bool assemblefile(const char *file, PASS pass); */ void outassemble(const char *file); -#endif /* YACASL2_ASSEMBLE_INCLUDEDの終端 */ +#endif