root/include/exec.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 #ifndef YACASL2_EXEC_H_INCLUDED
   2 #define YACASL2_EXEC_H_INCLUDED
   3 
   4 #include <stdbool.h>
   5 #include <stdio.h>
   6 #include <assert.h>
   7 #include <time.h>
   8 #include "struct.h"
   9 #include "word.h"
  10 #include "cmem.h"
  11 #include "cerr.h"
  12 
  13 enum {
  14     INSIZE = 256    /**<IN命令の、入力領域 */
  15 };
  16 
  17 /**
  18  * @brief クロック周波数を表す数値文字列を、正の整数値であるCLOCK型の数値に変換。変換できない場合は、エラーを表示して0を返す
  19  *
  20  * @return クロック周波数を表すCLOCK型の正の整数値。エラー時は0
  21  *
  22  * @param str クロック周波数を表す数値文字列
  23  */
  24 CLOCK clock_str2clock(const char *str);
  25 
  26 /**
  27  * @brief 実行エラーをエラーリストに追加する
  28  */
  29 void addcerrlist_exec();
  30 
  31 /**
  32  * @class Exec
  33  * @brief execから関数ポインタで呼び出される関数
  34  * @relatesalso exec
  35  **/
  36 
  37 /**
  38  * @brief COMET II仮想マシンを実行する
  39  *
  40  * @relatesalso Exec
  41  *
  42  */
  43 void exec();
  44 
  45 /**
  46  * @brief NOP命令。語長1(OPのみ)
  47  * @relatesalso Exec
  48  *
  49  */
  50 void nop();
  51 
  52 /**
  53  * @brief LD命令 - オペランドr,adr,x。語長2
  54  * @relatesalso Exec
  55  *
  56  */
  57 void ld_r_adr_x();
  58 
  59 /**
  60  * @brief LD命令 - オペランドr1,r2。語長1
  61  * @relatesalso Exec
  62  *
  63  */
  64 void ld_r1_r2();
  65 
  66 /**
  67  * @brief ST命令。語長2
  68  * @relatesalso Exec
  69  *
  70  */
  71 void st();
  72 
  73 /**
  74  * @brief LAD命令。語長2
  75  * @relatesalso Exec
  76  *
  77  */
  78 void lad();
  79 
  80 /**
  81  * @brief ADDA命令 - オペランドr,adr,x。語長2
  82  * @relatesalso Exec
  83  *
  84  */
  85 void adda_r_adr_x();
  86 
  87 /**
  88  * @brief ADDA命令 - オペランドr1,r2。語長1
  89  * @relatesalso Exec
  90  *
  91  */
  92 void adda_r1_r2();
  93 
  94 /**
  95  * @brief SUBA命令 - オペランドr,adr,x。語長2
  96  * @relatesalso Exec
  97  *
  98  */
  99 void suba_r_adr_x();
 100 
 101 /**
 102  * @brief SUBA命令 - オペランドr1,r2。語長1
 103  * @relatesalso Exec
 104  *
 105  */
 106 void suba_r1_r2();
 107 
 108 /**
 109  * @brief ADDL命令 - オペランドr,adr,x。語長2
 110  * @relatesalso Exec
 111  *
 112  */
 113 void addl_r_adr_x();
 114 
 115 /**
 116  * @brief ADDL命令 - オペランドr1,r2。語長1
 117  * @relatesalso Exec
 118  *
 119  */
 120 void addl_r1_r2();
 121 
 122 /**
 123  * @brief SUBL命令 - オペランドr,adr,x。語長2
 124  * @relatesalso Exec
 125  *
 126  */
 127 void subl_r_adr_x();
 128 
 129 /**
 130  * @brief SUBL命令 - オペランドr1,r2。語長1
 131  * @relatesalso Exec
 132  *
 133  */
 134 void subl_r1_r2();
 135 
 136 /**
 137  * @brief AND命令 - オペランドr,adr,x。語長2
 138  * @relatesalso Exec
 139  *
 140  */
 141 void and_r_adr_x();
 142 
 143 /**
 144  * @brief AND命令 - オペランドr1,r2。語長1
 145  * @relatesalso Exec
 146  *
 147  */
 148 void and_r1_r2();
 149 
 150 /**
 151  * @brief OR命令 - オペランドr,adr,x。語長2
 152  * @relatesalso Exec
 153  *
 154  */
 155 void or_r_adr_x();
 156 
 157 /**
 158  * @brief OR命令 - オペランドr1,r2。語長1
 159  * @relatesalso Exec
 160  *
 161  */
 162 void or_r1_r2();
 163 
 164 /**
 165  * @brief XOR命令 - オペランドr,adr,x。語長2
 166  * @relatesalso Exec
 167  *
 168  */
 169 void xor_r_adr_x();
 170 
 171 /**
 172  * @brief XOR命令 - オペランドr1,r2。語長1
 173  * @relatesalso Exec
 174  *
 175  */
 176 void xor_r1_r2();
 177 
 178 /**
 179  * @brief CPA命令 - オペランドr,adr,x。語長2
 180  * @relatesalso Exec
 181  *
 182  */
 183 void cpa_r_adr_x();
 184 
 185 /**
 186  * @brief CPA命令 - オペランドr1,r2。語長1
 187  * @relatesalso Exec
 188  *
 189  */
 190 void cpa_r1_r2();
 191 
 192 /**
 193  * @brief CPL命令 - オペランドr,adr,x。語長2
 194  * @relatesalso Exec
 195  *
 196  */
 197 void cpl_r_adr_x();
 198 
 199 /**
 200  * @brief CPL命令 - オペランドr1,r2。語長1
 201  * @relatesalso Exec
 202  *
 203  */
 204 void cpl_r1_r2();
 205 
 206 /**
 207  * @brief SLA命令 - オペランドr,adr,x。語長2
 208  *
 209  * 算術演算なので、第15ビットは送り出されない
 210  * @relatesalso Exec
 211  *
 212  */
 213 void sla();
 214 
 215 /**
 216  * @brief SRA命令 - オペランドr,adr,x。語長2
 217  *
 218  * 算術演算なので、第15ビットは送り出されない
 219  * 空いたビット位置には符号と同じものが入る
 220  * @relatesalso Exec
 221  *
 222  */
 223 void sra();
 224 
 225 /**
 226  * @brief SLL命令 - オペランドr,adr,x。語長2
 227  * @relatesalso Exec
 228  *
 229  */
 230 void sll();
 231 
 232 /**
 233  * @brief SRL命令 - オペランドr,adr,x。語長2
 234  * @relatesalso Exec
 235  *
 236  */
 237 void srl();
 238 
 239 /**
 240  * @brief JPL命令。語長2
 241  * @relatesalso Exec
 242  *
 243  */
 244 void jpl();
 245 
 246 /**
 247  * @brief JMI命令。語長2
 248  * @relatesalso Exec
 249  *
 250  */
 251 void jmi();
 252 
 253 /**
 254  * @brief JNZ命令。語長2
 255  * @relatesalso Exec
 256  *
 257  */
 258 void jnz();
 259 
 260 /**
 261  * @brief JZE命令。語長2
 262  * @relatesalso Exec
 263  *
 264  */
 265 void jze();
 266 
 267 /**
 268  * @brief JOV命令。語長2
 269  * @relatesalso Exec
 270  *
 271  */
 272 void jov();
 273 
 274 /**
 275  * @brief JUMP命令。語長2
 276  * @relatesalso Exec
 277  *
 278  */
 279 void jump();
 280 
 281 /**
 282  * @brief PUSH命令。語長2
 283  * @relatesalso Exec
 284  *
 285  */
 286 void push();
 287 
 288 /**
 289  * @brief POP命令。語長1
 290  * @relatesalso Exec
 291  *
 292  */
 293 void pop();
 294 
 295 /**
 296  * @brief CALL命令。語長2
 297  * @relatesalso Exec
 298  *
 299  */
 300 void call();
 301 
 302 /**
 303  * @brief RET命令。語長1(OPのみ)
 304  * @relatesalso Exec
 305  *
 306  */
 307 void ret();
 308 
 309 /**
 310  * @brief SVC命令。語長2
 311  * @relatesalso Exec
 312  *
 313  */
 314 void svc();
 315 
 316 /**
 317  * @brief COMET IIのメモリを表示する
 318  *
 319  * @param start 表示の開始アドレス
 320  * @param end 表示の終了アドレス
 321  */
 322 void dumpmemory(WORD start, WORD end);
 323 
 324 /**
 325  * @brief COMET IIのレジスタを表示する
 326  *
 327  */
 328 void dspregister();
 329 
 330 #endif

/* [<][>][^][v][top][bottom][index][help] */