⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exenv.h

📁 < 虚拟机设计与实现> 的source code, linux版本
💻 H
字号:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                                   +
+ exenv.h - this file stores info about the execution environmnet   +
+           ( i.e. RAM, registers )                                 +
+                                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

#ifndef _EXENV_H
#define _EXENV_H

#include "common.h"

#ifdef OS_WIN
#include "win32.h" 
#else
#include "linux.h"
#endif

#define $IP		0	/* address of next instruction to execute */
#define $SP		1	/* address of most recent value popped on stack */
#define $FP		2	/* stack frame pointer */
#define $BE		3	/* address of last byte of bytecode section */

#define $HS		4   /* address of first ( lowest ) byte of heap */
#define $HE		5   /* address of last ( highest ) byte used by heap */

#define $SS		6	/* address of bottom of stack ( lowest ) */
#define $TOP	7	/* address of top-of-stack ( highest )*/

/* General purpose registers */ 

#define $R1		8
#define $R2		9
#define $R3		10
#define $R4		11
#define $R5		12
#define $R6		13
#define $R7		14
#define $R8		15
#define $R9		16
#define $R10	17
#define $R11	18
#define $R12	19
#define $R13	20
#define $R14	21
#define $R15	22
#define $R16	23
#define $R17	24
#define $R18	25
#define $R19	26
#define $R20	27
#define $R21	28
#define $R22	29
#define $R23	30
#define $R24	31

#define $F1		0
#define $F2		1
#define $F3		2
#define $F4		3
#define $F5		4
#define $F6		5
#define $F7		6
#define $F8		7
#define $F9		8
#define $F10    9  

#define $D1		0
#define $D2		1
#define $D3		2
#define $D4		3
#define $D5		4
#define $D6		5
#define $D7		6
#define $D8		7
#define $D9		8
#define $D10    9

/* memory pointer, allocate memory on boot ------------------------*/

extern U1 * RAM;	/* [0,$BE]=code [$HS,$HE]=heap [$SS,$TOP]=stack */

/* REGISTERS ------------------------------------------------------*/
extern U8 R[32];  
extern F4 Rf[10];
extern F8 Rd[10];

extern char * R_STR[];
extern char * Rf_STR[];
extern char * Rd_STR[];

void printMemorySection(U8 address, U8 bytes);
void printAllRAM();
void printBasicRegisters();
void printGeneralRegisters();
void printFloatRegisters();
void printDoubleRegisters();

void testRegisterPrinting();

#endif

⌨️ 快捷键说明

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