store.c

来自「虚拟机设计与实现——C/C++」· C语言 代码 · 共 62 行

C
62
字号
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                                   +
+  store.c - this file implements store instructions                +
+				SB, SW, SD, SQ, SF1, SF2                            +
+                                                                   +
+                                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/*
	SB $r1, $r2 ->  BBB 

	$r1 = where byte is stored
	$r2 = address where we want to place byte
*/


#define HANDLE_SB();	DBG_RUN0("Optimized HANDLE_SB\n"); \
						badAddress(R[RAM[R[$IP]+2]],R[$IP]);\
	                    RAM[R[RAM[R[$IP]+2]]] = (S1)R[RAM[R[$IP]+1]];\
						R[$IP] = R[$IP]+3;\

/*-----------------------------------------------------------------*/


#define HANDLE_SW();	DBG_RUN0("Optimized HANDLE_SW\n");\
						badAddress(R[RAM[R[$IP]+2]],R[$IP]);\
	                    *((S2*)&RAM[R[RAM[R[$IP]+2]]] ) = (S2)R[RAM[R[$IP]+1]];\
						R[$IP] = R[$IP]+3;

/*-----------------------------------------------------------------*/


#define HANDLE_SD();	DBG_RUN0("Optimized HANDLE_SD\n");\
						badAddress(R[RAM[R[$IP]+2]],R[$IP]);\
	                    *((S4*)&RAM[R[RAM[R[$IP]+2]]] ) = (S4)R[RAM[R[$IP]+1]];\
						R[$IP] = R[$IP]+3;

/*-----------------------------------------------------------------*/


#define HANDLE_SQ();	DBG_RUN0("Optimized HANDLE_SQ\n");\
						badAddress(R[RAM[R[$IP]+2]],R[$IP]);\
	                    *((S8*)&RAM[R[RAM[R[$IP]+2]]] ) = (S8)R[RAM[R[$IP]+1]];\
						R[$IP] = R[$IP]+3;

/*-----------------------------------------------------------------*/

/* SF1 $f, $r */

#define HANDLE_SF1();	DBG_RUN0("Optimized HANDLE_SF1\n");\
						badAddress(R[RAM[R[$IP]+2]],R[$IP]);\
	                    *((F4*)&RAM[R[RAM[R[$IP]+2]]] ) = Rf[RAM[R[$IP]+1]];\
						R[$IP] = R[$IP]+3;

/*-----------------------------------------------------------------*/

/* SF2 $d, $r */

#define HANDLE_SF2();	DBG_RUN0("Optimized HANDLE_SF2\n");\
						badAddress(R[RAM[R[$IP]+2]],R[$IP]);\
	                    *((F8*)&RAM[R[RAM[R[$IP]+2]]] ) = Rd[RAM[R[$IP]+1]];\
						R[$IP] = R[$IP]+3;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?