X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fexec.c;h=7e7a43181a1f46cfe0dcdf868e3f4ed8ad55d7c5;hb=refs%2Ftags%2Fv0.1p52;hp=1bc891ee6196fcc8e4782cc2534dc58346ba8b33;hpb=7b6d89e7273b49e335af425cbb1ecb2258bf15df;p=YACASL2.git diff --git a/src/exec.c b/src/exec.c index 1bc891e..7e7a431 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"); @@ -100,7 +100,7 @@ void svcin() break; } if(sys->cpu->gr[1] + i > execptr->end) { - setcerr(208, NULL); /* SVC input - memory overflow */ + setcerr(208, ""); /* SVC input - memory overflow */ break; } sys->memory[sys->cpu->gr[1]+i] = *(buffer + i); @@ -119,7 +119,7 @@ void svcout() for(i = 0; i < sys->memory[sys->cpu->gr[2]]; i++) { if(sys->cpu->gr[1] + i > execptr->end) { - setcerr(209, NULL); /* SVC output - memory overflow */ + setcerr(209, ""); /* SVC output - memory overflow */ return; } /* 「文字の組」の符号表に記載された文字と、改行(CR)/タブを表示 */ @@ -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,7 +261,7 @@ void lad() } /** - * ADDA命令のテンプレート + * ADDA命令のテンプレート\n * 汎用レジスタrに値valを算術加算 */ void adda(WORD r, WORD val) @@ -280,6 +285,7 @@ void adda(WORD r, WORD val) /** * ADDA命令 - オペランドr,adr,x。語長2 + * \relates exec */ void adda_r_adr_x() { @@ -292,6 +298,7 @@ void adda_r_adr_x() /** * ADDA命令 - オペランドr1,r2。語長1 + * \relates exec */ void adda_r1_r2() { @@ -303,6 +310,7 @@ void adda_r1_r2() /** * SUBA命令 - オペランドr,adr,x。語長2 + * \relates exec */ void suba_r_adr_x() { @@ -315,6 +323,7 @@ void suba_r_adr_x() /** * SUBA命令 - オペランドr1,r2。語長1 + * \relates exec */ void suba_r1_r2() { @@ -325,7 +334,7 @@ void suba_r1_r2() } /** - * ADDL命令のテンプレート + * ADDL命令のテンプレート\n * 汎用レジスタrに値valを論理加算 */ void addl(WORD r, WORD val) @@ -345,6 +354,7 @@ void addl(WORD r, WORD val) /** * ADDL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void addl_r_adr_x() { @@ -357,6 +367,7 @@ void addl_r_adr_x() /** * ADDL命令 - オペランドr1,r2。語長1 + * \relates exec */ void addl_r1_r2() { @@ -368,6 +379,7 @@ void addl_r1_r2() /** * SUBL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void subl_r_adr_x() { @@ -378,8 +390,10 @@ void subl_r_adr_x() sys->cpu->pr += 2; } + /** * SUBL命令 - オペランドr1,r2。語長1 + * \relates exec */ void subl_r1_r2() { @@ -391,6 +405,7 @@ void subl_r1_r2() /** * AND命令 - オペランドr,adr,x。語長2 + * \relates exec */ void and_r_adr_x() { @@ -403,6 +418,7 @@ void and_r_adr_x() /** * AND命令 - オペランドr1,r2。語長1 + * \relates exec */ void and_r1_r2() { @@ -414,6 +430,7 @@ void and_r1_r2() /** * OR命令 - オペランドr,adr,x。語長2 + * \relates exec */ void or_r_adr_x() { @@ -426,6 +443,7 @@ void or_r_adr_x() /** * OR命令 - オペランドr1,r2。語長1 + * \relates exec */ void or_r1_r2() { @@ -437,6 +455,7 @@ void or_r1_r2() /** * XOR命令 - オペランドr,adr,x。語長2 + * \relates exec */ void xor_r_adr_x() { @@ -449,6 +468,7 @@ void xor_r_adr_x() /** * XOR命令 - オペランドr1,r2。語長1 + * \relates exec */ void xor_r1_r2() { @@ -459,7 +479,7 @@ void xor_r1_r2() } /** - * CPA命令のテンプレート + * CPA命令のテンプレート\n * 汎用レジスタrの内容と値valを算術比較 */ void cpa(WORD r, WORD val) @@ -474,6 +494,7 @@ void cpa(WORD r, WORD val) /** * CPA命令 - オペランドr,adr,x。語長2 + * \relates exec */ void cpa_r_adr_x() { @@ -486,6 +507,7 @@ void cpa_r_adr_x() /** * CPA命令 - オペランドr1,r2。語長1 + * \relates exec */ void cpa_r1_r2() { @@ -496,13 +518,11 @@ void cpa_r1_r2() } /** - * CPL命令のテンプレート + * CPL命令のテンプレート\n * 汎用レジスタrの内容と値valを論理比較 */ void cpl(WORD r, WORD val) { - WORD w[1]; - w[0] = sys->memory[sys->cpu->pr]; sys->cpu->fr = 0x0; if(sys->cpu->gr[r] < val) { sys->cpu->fr = SF; @@ -514,6 +534,7 @@ void cpl(WORD r, WORD val) /** * CPL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void cpl_r_adr_x() { @@ -526,6 +547,7 @@ void cpl_r_adr_x() /** * CPL命令 - オペランドr1,r2。語長1 + * \relates exec */ void cpl_r1_r2() { @@ -536,8 +558,9 @@ void cpl_r1_r2() } /** - * SLA命令 - オペランドr,adr,x。語長2 + * SLA命令 - オペランドr,adr,x。語長2\n * 算術演算なので、第15ビットは送り出されない + * \relates exec */ void sla() { @@ -570,9 +593,10 @@ void sla() } /** - * SRA命令 - オペランドr,adr,x。語長2 - * 算術演算なので、第15ビットは送り出されない + * SRA命令 - オペランドr,adr,x。語長2\n + * 算術演算なので、第15ビットは送り出されない\n * 空いたビット位置には符号と同じものが入る + * \relates exec */ void sra() { @@ -609,6 +633,7 @@ void sra() /** * SLL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void sll() { @@ -639,6 +664,7 @@ void sll() /** * SRL命令 - オペランドr,adr,x。語長2 + * \relates exec */ void srl() { @@ -670,6 +696,7 @@ void srl() /** * JPL命令。語長2 + * \relates exec */ void jpl() { @@ -685,6 +712,7 @@ void jpl() /** * JMI命令。語長2 + * \relates exec */ void jmi() { @@ -700,6 +728,7 @@ void jmi() /** * JNZ命令。語長2 + * \relates exec */ void jnz() { @@ -715,6 +744,7 @@ void jnz() /** * JZE命令。語長2 + * \relates exec */ void jze() { @@ -730,6 +760,7 @@ void jze() /** * JOV命令。語長2 + * \relates exec */ void jov() { @@ -745,6 +776,7 @@ void jov() /** * JUMP命令。語長2 + * \relates exec */ void jump() { @@ -756,6 +788,7 @@ void jump() /** * PUSH命令。語長2 + * \relates exec */ void push() { @@ -769,6 +802,7 @@ void push() /** * POP命令。語長1 + * \relates exec */ void pop() { @@ -781,6 +815,7 @@ void pop() /** * CALL命令。語長2 + * \relates exec */ void call() { @@ -794,6 +829,7 @@ void call() /** * RET命令。語長1(OPのみ) + * \relates exec */ void ret() { @@ -807,6 +843,7 @@ void ret() /** * SVC命令。語長2 + * \relates exec */ void svc() { @@ -830,6 +867,7 @@ void svc() /** * 仮想マシンCOMET IIの実行 + * \class exec */ void exec() {