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
/
exec.h
diff --git
a/include/exec.h
b/include/exec.h
index
2f4118f
..
432d3fd
100644
(file)
--- a/
include/exec.h
+++ b/
include/exec.h
@@
-2,252
+2,397
@@
#define YACASL2_EXEC_INCLUDED
#include <stdbool.h>
#define YACASL2_EXEC_INCLUDED
#include <stdbool.h>
+#include <stdio.h>
+#include <assert.h>
+#include <time.h>
#include "struct.h"
#include "word.h"
#include "struct.h"
#include "word.h"
+#include "cmem.h"
+#include "cerr.h"
+#include "monitor.h"
+#include "disassemble.h"
enum {
INSIZE = 256 /**<IN命令の、入力領域 */
};
/**
enum {
INSIZE = 256 /**<IN命令の、入力領域 */
};
/**
- *
実行モード
型
+ *
@brief 実行モードを表すデータ
型
*/
typedef struct {
*/
typedef struct {
- bool trace; /**<レジストリの内容を表示する場合はtrue */
+ bool trace; /**<レジストリの内容を
ステップごとに
表示する場合はtrue */
bool logical; /**<レジストリの内容を論理値(0から65535)で表示する場合はtrue */
bool logical; /**<レジストリの内容を論理値(0から65535)で表示する場合はtrue */
- bool dump; /**<メモリの内容を表示する場合はtrue */
+ bool dump; /**<メモリの内容をステップごとに表示する場合はtrue */
+ bool step; /**<ステップ実行の場合はtrue */
} EXECMODE;
/**
} EXECMODE;
/**
- *
実行モード: trace, logical, dum
p
+ *
@brief 実行モード: trace, logical, dump, ste
p
*/
extern EXECMODE execmode;
/**
*/
extern EXECMODE execmode;
/**
- *
実行エラーをエラーリストに追加
+ *
@brief 実行エラーをエラーリストに追加する
*/
void addcerrlist_exec();
/**
*/
void addcerrlist_exec();
/**
- *
アセンブル結果読み込みエラーをエラーリストに追加
+ *
@brief アセンブル結果読み込みエラーをエラーリストに追加する
*/
void addcerrlist_load();
/**
*/
void addcerrlist_load();
/**
- * 指定されたファイルからアセンブル結果を読み込む
+ *
@brief
指定されたファイルからアセンブル結果を読み込む
*/
bool loadassemble(const char *file);
/**
*/
bool loadassemble(const char *file);
/**
- * COMET II仮想マシンのリセット
+ * @brief 汎用レジスタの番号からレジスタを表す文字列を返す
+ *
+ * @return 汎用レジスタを表す文字列。「GR0」「GR1」・・・「GR7」のいずれか
+ *
+ * @param word レジスタ番号[0-7]を表すWORD値
*/
*/
-
void reset(
);
+
char *grstr(WORD word
);
/**
/**
- * NOP命令。語長1(OPのみ)
+ * @class Exec
+ * @brief execから関数ポインタで呼び出される関数
+ * @relatesalso exec
+ **/
+
+/**
+ * @brief COMET II仮想マシンを実行する
+ *
+ * @relatesalso Exec
+ *
+ * @return なし
+ */
+void exec();
+
+/**
+ * @brief NOP命令。語長1(OPのみ)
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void nop();
/**
*/
void nop();
/**
- * LD命令 - オペランドr,adr,x。語長2
+ * @brief LD命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void ld_r_adr_x();
/**
*/
void ld_r_adr_x();
/**
- * LD命令 - オペランドr1,r2。語長1
+ * @brief LD命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void ld_r1_r2();
/**
*/
void ld_r1_r2();
/**
- * ST命令。語長2
+ * @brief ST命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void st();
/**
*/
void st();
/**
- * LAD命令。語長2
+ * @brief LAD命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void lad();
/**
*/
void lad();
/**
- * ADDA命令 - オペランドr,adr,x。語長2
+ * @brief ADDA命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void adda_r_adr_x();
/**
*/
void adda_r_adr_x();
/**
- * ADDA命令 - オペランドr1,r2。語長1
+ * @brief ADDA命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void adda_r1_r2();
/**
*/
void adda_r1_r2();
/**
- * SUBA命令 - オペランドr,adr,x。語長2
+ * @brief SUBA命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void suba_r_adr_x();
/**
*/
void suba_r_adr_x();
/**
- * SUBA命令 - オペランドr1,r2。語長1
+ * @brief SUBA命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void suba_r1_r2();
/**
*/
void suba_r1_r2();
/**
- * ADDL命令 - オペランドr,adr,x。語長2
+ * @brief ADDL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void addl_r_adr_x();
/**
*/
void addl_r_adr_x();
/**
- * ADDL命令 - オペランドr1,r2。語長1
+ * @brief ADDL命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void addl_r1_r2();
/**
*/
void addl_r1_r2();
/**
- * SUBL命令 - オペランドr,adr,x。語長2
+ * @brief SUBL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void subl_r_adr_x();
/**
*/
void subl_r_adr_x();
/**
- * SUBL命令 - オペランドr1,r2。語長1
+ * @brief SUBL命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void subl_r1_r2();
/**
*/
void subl_r1_r2();
/**
- * AND命令 - オペランドr,adr,x。語長2
+ * @brief AND命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void and_r_adr_x();
/**
*/
void and_r_adr_x();
/**
- * AND命令 - オペランドr1,r2。語長1
+ * @brief AND命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void and_r1_r2();
/**
*/
void and_r1_r2();
/**
- * OR命令 - オペランドr,adr,x。語長2
+ * @brief OR命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void or_r_adr_x();
/**
*/
void or_r_adr_x();
/**
- * OR命令 - オペランドr1,r2。語長1
+ * @brief OR命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void or_r1_r2();
/**
*/
void or_r1_r2();
/**
- * XOR命令 - オペランドr,adr,x。語長2
+ * @brief XOR命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void xor_r_adr_x();
/**
*/
void xor_r_adr_x();
/**
- * XOR命令 - オペランドr1,r2。語長1
+ * @brief XOR命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void xor_r1_r2();
/**
*/
void xor_r1_r2();
/**
- * CPA命令 - オペランドr,adr,x。語長2
+ * @brief CPA命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void cpa_r_adr_x();
/**
*/
void cpa_r_adr_x();
/**
- * CPA命令 - オペランドr1,r2。語長1
+ * @brief CPA命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void cpa_r1_r2();
/**
*/
void cpa_r1_r2();
/**
- * CPL命令 - オペランドr,adr,x。語長2
+ * @brief CPL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void cpl_r_adr_x();
/**
*/
void cpl_r_adr_x();
/**
- * CPL命令 - オペランドr1,r2。語長1
+ * @brief CPL命令 - オペランドr1,r2。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void cpl_r1_r2();
/**
*/
void cpl_r1_r2();
/**
- * SLA命令 - オペランドr,adr,x。語長2
+ * @brief SLA命令 - オペランドr,adr,x。語長2
+ *
* 算術演算なので、第15ビットは送り出されない
* 算術演算なので、第15ビットは送り出されない
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void sla();
/**
*/
void sla();
/**
- * SRA命令 - オペランドr,adr,x。語長2
+ * @brief SRA命令 - オペランドr,adr,x。語長2
+ *
* 算術演算なので、第15ビットは送り出されない
* 空いたビット位置には符号と同じものが入る
* 算術演算なので、第15ビットは送り出されない
* 空いたビット位置には符号と同じものが入る
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void sra();
/**
*/
void sra();
/**
- * SLL命令 - オペランドr,adr,x。語長2
+ * @brief SLL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void sll();
/**
*/
void sll();
/**
- * SRL命令 - オペランドr,adr,x。語長2
+ * @brief SRL命令 - オペランドr,adr,x。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void srl();
/**
*/
void srl();
/**
- * JPL命令。語長2
+ * @brief JPL命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void jpl();
/**
*/
void jpl();
/**
- * JMI命令。語長2
+ * @brief JMI命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void jmi();
/**
*/
void jmi();
/**
- * JNZ命令。語長2
+ * @brief JNZ命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void jnz();
/**
*/
void jnz();
/**
- * JZE命令。語長2
+ * @brief JZE命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void jze();
/**
*/
void jze();
/**
- * JOV命令。語長2
+ * @brief JOV命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void jov();
/**
*/
void jov();
/**
- * JUMP命令。語長2
+ * @brief JUMP命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void jump();
/**
*/
void jump();
/**
- * PUSH命令。語長2
+ * @brief PUSH命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void push();
/**
*/
void push();
/**
- * POP命令。語長1
+ * @brief POP命令。語長1
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void pop();
/**
*/
void pop();
/**
- * CALL命令。語長2
+ * @brief CALL命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void call();
/**
*/
void call();
/**
- * RET命令。語長1(OPのみ)
+ * @brief RET命令。語長1(OPのみ)
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void ret();
/**
*/
void ret();
/**
- * SVC命令。語長2
+ * @brief SVC命令。語長2
+ * @relatesalso Exec
+ *
+ * @return なし
*/
void svc();
/**
*/
void svc();
/**
- *
COMET II仮想マシンの実行
- *
/
-void exec();
-
-/**
- *
COMET IIのメモリを表示
+ *
@brief COMET IIのメモリを表示する
+ *
+ * @return なし
+ *
+ * @param start 表示の開始アドレス
+ *
@param end 表示の終了アドレス
*/
*/
-void dumpmemory();
+void dumpmemory(
WORD start, WORD end
);
/**
/**
- * COMET IIのレジスタを表示
+ * @brief COMET IIのレジスタを表示する
+ *
+ * @return なし
*/
void dspregister();
*/
void dspregister();