From 3964fd135fcf5f6309639096437dd7f07e0c035f Mon Sep 17 00:00:00 2001 From: j8takagi Date: Tue, 26 Apr 2011 20:36:48 +0900 Subject: [PATCH] =?utf8?q?Doxygen=E3=81=AE=E3=82=B3=E3=83=A1=E3=83=B3?= =?utf8?q?=E3=83=88=E3=81=AB=E3=80=81class=E3=81=A8code=E3=82=92=E9=81=A9?= =?utf8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- include/exec.h | 3 ++- src/assemble.c | 49 +++++++++++++++++++++++++++++------------- src/cmd.c | 6 +++--- src/cmem.c | 4 ++-- src/exec.c | 58 +++++++++++++++++++++++++++++++++++++++++++------- 5 files changed, 91 insertions(+), 29 deletions(-) diff --git a/include/exec.h b/include/exec.h index 2f4118f..fea403b 100644 --- a/include/exec.h +++ b/include/exec.h @@ -237,7 +237,8 @@ void ret(); void svc(); /** - * COMET II仮想マシンの実行 + * COMET II仮想マシンの実行\n + * 関数へのポインタで呼び出す関数は、Class Reference 参照 */ void exec(); diff --git a/src/assemble.c b/src/assemble.c index 00c395f..989173f 100644 --- a/src/assemble.c +++ b/src/assemble.c @@ -21,7 +21,7 @@ ASPTR *asptr; * アセンブルのエラー定義 */ static CERR cerr_assemble[] = { - { 106, "operand mismatch in assemble command" }, + { 106, "operand mismatch in CASL II command" }, { 107, "no label in START" }, { 108, "not command of operand \"r\"" }, { 109, "not command of operand \"r1,r2\"" }, @@ -116,7 +116,7 @@ void printline(FILE *stream, const char *filename, int lineno, char *line) } /** - * アドレスを返す + * アドレスを返す\n * アドレスには、リテラル/10進定数/16進定数/アドレス定数が含まれる */ WORD getadr(const char *prog, const char *str, PASS pass) @@ -138,8 +138,8 @@ WORD getadr(const char *prog, const char *str, PASS pass) } /** - * 汎用レジスタを表す文字列 "GR[0-7]" から、レジスタ番号 [0-7] をWORD値で返す - * 文字列が汎用レジスタを表さない場合は、0xFFFFを返す + * 汎用レジスタを表す文字列 "GR[0-7]" から、レジスタ番号 [0-7] をWORD値で返す\n + * 文字列が汎用レジスタを表さない場合は、0xFFFFを返す\n * is_xがtrueの場合は指標レジスタ。GR0が指定された場合は、COMET IIの仕様によりエラー発生 */ WORD getgr(const char *str, bool is_x) @@ -163,7 +163,7 @@ WORD getgr(const char *str, bool is_x) } /** - * 定数の前に等号(=)をつけて記述されるリテラルを返す + * 定数の前に等号(=)をつけて記述されるリテラルを返す\n * リテラルには、10進定数/16進定数/文字定数が含まれる */ WORD getliteral(const char *str, PASS pass) @@ -250,6 +250,7 @@ void writedc(const char *str, PASS pass) /** * アセンブラ命令STARTの処理 + * \relates casl2cmd */ void assemble_start(const CMDLINE *cmdl, PASS pass) { @@ -273,6 +274,7 @@ void assemble_start(const CMDLINE *cmdl, PASS pass) /** * アセンブラ命令ENDの処理 + * \relates casl2cmd */ void assemble_end(const CMDLINE *cmdl, PASS pass) { @@ -293,6 +295,7 @@ void assemble_end(const CMDLINE *cmdl, PASS pass) /** * アセンブラ命令DSの処理 + * \relates casl2cmd */ void assemble_ds(const CMDLINE *cmdl, PASS pass) { @@ -311,6 +314,7 @@ void assemble_ds(const CMDLINE *cmdl, PASS pass) /** * アセンブラ命令DCの処理 + * \relates casl2cmd */ void assemble_dc(const CMDLINE *cmdl, PASS pass) { @@ -328,7 +332,8 @@ void assemble_dc(const CMDLINE *cmdl, PASS pass) } /** - * マクロ命令 "IN IBUF,LEN" をアセンブル + * マクロ命令 "IN IBUF,LEN" をアセンブル\n + * \code * PUSH 0,GR1 * PUSH 0,GR2 * LAD GR1,IBUF @@ -336,6 +341,8 @@ void assemble_dc(const CMDLINE *cmdl, PASS pass) * SVC 1 * POP GR2 * POP GR1 + * \endcode + * \relates casl2cmd */ void assemble_in(const CMDLINE *cmdl, PASS pass) { @@ -357,7 +364,8 @@ void assemble_in(const CMDLINE *cmdl, PASS pass) } /** - * マクロ命令 "OUT OBUF,LEN" をアセンブル + * マクロ命令 "OUT OBUF,LEN" をアセンブル\n + * \code * PUSH 0,GR1 * PUSH 0,GR2 * LAD GR1,OBUF @@ -368,6 +376,8 @@ void assemble_in(const CMDLINE *cmdl, PASS pass) * SVC 2 * POP GR2 * POP GR1 + * \endcode + * \relates casl2cmd */ void assemble_out(const CMDLINE *cmdl, PASS pass) { @@ -391,7 +401,9 @@ void assemble_out(const CMDLINE *cmdl, PASS pass) FREE(line); } -/** マクロ命令 "RPUSH" をメモリに書き込む +/** + * マクロ命令 "RPUSH" をメモリに書き込む + * \code * PUSH 0,GR1 * PUSH 0,GR2 * PUSH 0,GR3 @@ -399,6 +411,8 @@ void assemble_out(const CMDLINE *cmdl, PASS pass) * PUSH 0,GR5 * PUSH 0,GR6 * PUSH 0,GR7 + * \endcode + * \relates casl2cmd */ void assemble_rpush(const CMDLINE *cmdl, PASS pass) { @@ -416,7 +430,8 @@ void assemble_rpush(const CMDLINE *cmdl, PASS pass) } /** - * マクロ命令 "RPOP" をメモリに書き込む + * マクロ命令 "RPOP" をメモリに書き込む\n + * \code * POP GR7 * POP GR6 * POP GR5 @@ -425,6 +440,8 @@ void assemble_rpush(const CMDLINE *cmdl, PASS pass) * POP GR3 * POP GR2 * POP GR1 + * \endcode + * \relates casl2cmd */ void assemble_rpop(const CMDLINE *cmdl, PASS pass) { @@ -442,9 +459,11 @@ void assemble_rpop(const CMDLINE *cmdl, PASS pass) } /** - * アセンブラ言語CASL IIの命令を処理 - * 命令が表で定義されている場合はtrue、それ以外の場合はfalseを返す - * エラー発生時は、cerrを設定 + * アセンブラ言語CASL IIの命令を処理\n + * 命令が表で定義されている場合はtrue、それ以外の場合はfalseを返す\n + * エラー発生時は、cerrを設定\n + * 関数へのポインタで呼び出す関数は、Class Reference 参照 + * \class casl2cmd */ bool casl2cmd(CMD *cmdtbl, const CMDLINE *cmdl, PASS pass) { @@ -461,7 +480,7 @@ bool casl2cmd(CMD *cmdtbl, const CMDLINE *cmdl, PASS pass) } /** - * システムCOMET IIの命令をアセンブル + * システムCOMET IIの命令をアセンブル\n * アセンブルに成功した場合はtrue、失敗した場合はfalseを返す */ bool assemble_comet2cmd(const CMDLINE *cmdl, PASS pass) @@ -573,7 +592,7 @@ bool assembletok(const CMDLINE *cmdl, PASS pass) } /** - * 1行をアセンブル + * 1行をアセンブル\n * passが1の場合はラベルを登録し、2の場合はラベルからアドレスを読み込む */ bool assembleline(const char *line, PASS pass) @@ -607,7 +626,7 @@ bool assembleline(const char *line, PASS pass) } /** - * 指定された名前のファイルをアセンブル + * 指定された名前のファイルをアセンブル\n * アセンブル完了時はtrue、エラー発生時はfalseを返す */ bool assemblefile(const char *file, PASS pass) diff --git a/src/cmd.c b/src/cmd.c index 1273a09..7896d06 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -7,7 +7,7 @@ #include "exec.h" /** - * 機械語命令のリスト + * システムCOMET IIの命令表 */ static COMET2CMD comet2cmd[] = { { "NOP", NONE, 0x0, nop }, @@ -51,7 +51,7 @@ static COMET2CMD comet2cmd[] = { }; /** - * 命令コード配列のサイズ + * 命令表のサイズ */ static int comet2cmdsize = ARRAYSIZE(comet2cmd); @@ -112,7 +112,7 @@ bool create_cmdtype_code() } /** - * 命令の名前とタイプから、命令コードを返す + * 命令の名前とタイプから、命令コードを返す\n * 無効な場合は0xFFFFを返す */ WORD getcmdcode(const char *cmd, CMDTYPE type) diff --git a/src/cmem.c b/src/cmem.c index b5f9033..3085ea6 100644 --- a/src/cmem.c +++ b/src/cmem.c @@ -6,7 +6,7 @@ #include "cmem.h" /** - * mallocを実行し、0で初期化 + * mallocを実行し、0で初期化\n * メモリを確保できない場合はエラーを出力して終了 */ void *malloc_chk(size_t size, char *tag) @@ -21,7 +21,7 @@ void *malloc_chk(size_t size, char *tag) } /** - * callocを実行 + * callocを実行\n * メモリを確保できない場合はエラーを出力して終了 */ void *calloc_chk(size_t nmemb, size_t size, char *tag) diff --git a/src/exec.c b/src/exec.c index 1bc891e..36543e9 100644 --- a/src/exec.c +++ b/src/exec.c @@ -74,7 +74,7 @@ bool loadassemble(const char *file) /** * プログラムレジスタ(PR)を表す文字列を返す - **/ + */ char *pr2str(WORD pr) { char *str = malloc_chk(CERRSTRSIZE + 1, "pr2str.pr"); @@ -202,6 +202,7 @@ WORD get_val_adr_x(WORD adr, WORD oprx) /** * NOP命令。語長1(OPのみ) + * \relates exec */ void nop() { @@ -210,6 +211,7 @@ void nop() /** * LD命令 - オペランドr,adr,x。語長2 + * \relates exec */ void ld_r_adr_x() { @@ -222,6 +224,7 @@ void ld_r_adr_x() /** * LD命令 - オペランドr1,r2。語長1 + * \relates exec */ void ld_r1_r2() { @@ -233,6 +236,7 @@ void ld_r1_r2() /** * ST命令。語長2 + * \relates exec */ void st() { @@ -245,6 +249,7 @@ void st() /** * LAD命令。語長2 + * \relates exec */ void lad() { @@ -256,8 +261,9 @@ void lad() } /** - * ADDA命令のテンプレート + * ADDA命令のテンプレート\n * 汎用レジスタrに値valを算術加算 + * \relates exec */ void adda(WORD r, WORD val) { @@ -280,6 +286,7 @@ void adda(WORD r, WORD val) /** * ADDA命令 - オペランドr,adr,x。語長2 + * \relates exec */ void adda_r_adr_x() { @@ -292,6 +299,7 @@ void adda_r_adr_x() /** * ADDA命令 - オペランドr1,r2。語長1 + * \relates exec */ void adda_r1_r2() { @@ -303,6 +311,7 @@ void adda_r1_r2() /** * SUBA命令 - オペランドr,adr,x。語長2 + * \relates exec */ void suba_r_adr_x() { @@ -315,6 +324,7 @@ void suba_r_adr_x() /** * SUBA命令 - オペランドr1,r2。語長1 + * \relates exec */ void suba_r1_r2() { @@ -325,8 +335,9 @@ void suba_r1_r2() } /** - * ADDL命令のテンプレート + * ADDL命令のテンプレート\n * 汎用レジスタrに値valを論理加算 + * \relates exec */ void addl(WORD r, WORD val) { @@ -345,6 +356,7 @@ void addl(WORD r, WORD val) /** * ADDL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void addl_r_adr_x() { @@ -357,6 +369,7 @@ void addl_r_adr_x() /** * ADDL命令 - オペランドr1,r2。語長1 + * \relates exec */ void addl_r1_r2() { @@ -368,6 +381,7 @@ void addl_r1_r2() /** * SUBL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void subl_r_adr_x() { @@ -378,8 +392,10 @@ void subl_r_adr_x() sys->cpu->pr += 2; } + /** * SUBL命令 - オペランドr1,r2。語長1 + * \relates exec */ void subl_r1_r2() { @@ -391,6 +407,7 @@ void subl_r1_r2() /** * AND命令 - オペランドr,adr,x。語長2 + * \relates exec */ void and_r_adr_x() { @@ -403,6 +420,7 @@ void and_r_adr_x() /** * AND命令 - オペランドr1,r2。語長1 + * \relates exec */ void and_r1_r2() { @@ -414,6 +432,7 @@ void and_r1_r2() /** * OR命令 - オペランドr,adr,x。語長2 + * \relates exec */ void or_r_adr_x() { @@ -426,6 +445,7 @@ void or_r_adr_x() /** * OR命令 - オペランドr1,r2。語長1 + * \relates exec */ void or_r1_r2() { @@ -437,6 +457,7 @@ void or_r1_r2() /** * XOR命令 - オペランドr,adr,x。語長2 + * \relates exec */ void xor_r_adr_x() { @@ -449,6 +470,7 @@ void xor_r_adr_x() /** * XOR命令 - オペランドr1,r2。語長1 + * \relates exec */ void xor_r1_r2() { @@ -459,7 +481,7 @@ void xor_r1_r2() } /** - * CPA命令のテンプレート + * CPA命令のテンプレート\n * 汎用レジスタrの内容と値valを算術比較 */ void cpa(WORD r, WORD val) @@ -474,6 +496,7 @@ void cpa(WORD r, WORD val) /** * CPA命令 - オペランドr,adr,x。語長2 + * \relates exec */ void cpa_r_adr_x() { @@ -486,6 +509,7 @@ void cpa_r_adr_x() /** * CPA命令 - オペランドr1,r2。語長1 + * \relates exec */ void cpa_r1_r2() { @@ -496,7 +520,7 @@ void cpa_r1_r2() } /** - * CPL命令のテンプレート + * CPL命令のテンプレート\n * 汎用レジスタrの内容と値valを論理比較 */ void cpl(WORD r, WORD val) @@ -514,6 +538,7 @@ void cpl(WORD r, WORD val) /** * CPL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void cpl_r_adr_x() { @@ -526,6 +551,7 @@ void cpl_r_adr_x() /** * CPL命令 - オペランドr1,r2。語長1 + * \relates exec */ void cpl_r1_r2() { @@ -536,7 +562,8 @@ void cpl_r1_r2() } /** - * SLA命令 - オペランドr,adr,x。語長2 + * SLA命令 - オペランドr,adr,x。語長2\n + * \relates exec * 算術演算なので、第15ビットは送り出されない */ void sla() @@ -570,9 +597,10 @@ void sla() } /** - * SRA命令 - オペランドr,adr,x。語長2 - * 算術演算なので、第15ビットは送り出されない + * SRA命令 - オペランドr,adr,x。語長2\n + * 算術演算なので、第15ビットは送り出されない\n * 空いたビット位置には符号と同じものが入る + * \relates exec */ void sra() { @@ -609,6 +637,7 @@ void sra() /** * SLL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void sll() { @@ -639,6 +668,7 @@ void sll() /** * SRL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void srl() { @@ -670,6 +700,7 @@ void srl() /** * JPL命令。語長2 + * \relates exec */ void jpl() { @@ -685,6 +716,7 @@ void jpl() /** * JMI命令。語長2 + * \relates exec */ void jmi() { @@ -700,6 +732,7 @@ void jmi() /** * JNZ命令。語長2 + * \relates exec */ void jnz() { @@ -715,6 +748,7 @@ void jnz() /** * JZE命令。語長2 + * \relates exec */ void jze() { @@ -730,6 +764,7 @@ void jze() /** * JOV命令。語長2 + * \relates exec */ void jov() { @@ -745,6 +780,7 @@ void jov() /** * JUMP命令。語長2 + * \relates exec */ void jump() { @@ -756,6 +792,7 @@ void jump() /** * PUSH命令。語長2 + * \relates exec */ void push() { @@ -769,6 +806,7 @@ void push() /** * POP命令。語長1 + * \relates exec */ void pop() { @@ -781,6 +819,7 @@ void pop() /** * CALL命令。語長2 + * \relates exec */ void call() { @@ -794,6 +833,7 @@ void call() /** * RET命令。語長1(OPのみ) + * \relates exec */ void ret() { @@ -807,6 +847,7 @@ void ret() /** * SVC命令。語長2 + * \relates exec */ void svc() { @@ -830,6 +871,7 @@ void svc() /** * 仮想マシンCOMET IIの実行 + * \class exec */ void exec() { -- 2.18.0