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

📄 memory.h

📁 SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具
💻 H
字号:
/**********************************//*                                *//*  Copyright 2000, David Grant   *//*                                *//*  see LICENSE for more details  *//*                                *//**********************************/#ifndef MEMORY_H#define MEMORY_H/* Memory definitions */struct _memory_core {	unsigned int pc;	unsigned int pc_instruction_begin;	unsigned int sr;	unsigned int mbar;	unsigned int mbar_size;	unsigned int mbar2;	unsigned int mbar2_size;	unsigned int rambar;	unsigned int rambar1;	unsigned int rombar;	unsigned int vbr;	unsigned int cacr;	unsigned int d[8];	unsigned int a[8];	char (*mbar_write)(short size, int offset, unsigned int value);	char (*mbar_read)(unsigned int * result, short size, int offset);	char (*mbar2_write)(short size, int offset, unsigned int value);	char (*mbar2_read)(unsigned int * result, short size, int offset);};/* Actually declared in memory.c */extern struct _memory_core memory_core;struct _SR {#ifndef WORDS_BIGENDIAN	unsigned C:1;	unsigned V:1;	unsigned Z:1;	unsigned N:1;	unsigned X:1;	unsigned Unused:3;	unsigned InterruptPriorityMask:3;	unsigned Unused2:1;	unsigned M:1;	unsigned S:1;	unsigned Unused3:1;	unsigned T:1;	unsigned pad:16;#else	unsigned pad:16;	unsigned T:1;	unsigned Unused3:1;	unsigned S:1;	unsigned M:1;	unsigned Unused2:1;	unsigned InterruptPriorityMask:3;	unsigned Unused:3;	unsigned X:1;	unsigned N:1;	unsigned Z:1;	unsigned V:1;	unsigned C:1;#endif};extern struct _SR *SRBits; void memory_reset(void);void Memory_Init(void);void Memory_DeInit(void);/* Memory seek */char memory_seek(unsigned int offset);/* Memory retrive */#define Memory_RetrLongWord(V,Offset) 	Memory_Retr(V,32,Offset)#define Memory_RetrWord(V,Offset) 	Memory_Retr(V,16,Offset)#define Memory_RetrByte(V,Offset) 	Memory_Retr(V,8,Offset)char Memory_Retr(unsigned int *Result, short Size, int Offset);/* Memory Store */#define Memory_StorLongWord(Offset,Value) 	Memory_Stor(32,Offset,Value)#define Memory_StorWord(Offset,Value) 		Memory_Stor(16,Offset,Value)#define Memory_StorByte(Offset,Value) 		Memory_Stor(8,Offset,Value)char Memory_Stor(short Size, int Offset, unsigned int Value);/* Memory retrive, and update the PC */#define Memory_RetrByteFromPC(V)	Memory_RetrFromPC(V,8)#define Memory_RetrWordFromPC(V) 	Memory_RetrFromPC(V,16)#define Memory_RetrLongWordFromPC(V) 	Memory_RetrFromPC(V,32)char Memory_RetrFromPC(unsigned int *Result, short Size);void memory_update(void);enum {	SR_C = 0x0001,	SR_V = 0x0002,	SR_Z = 0x0004,	SR_N = 0x0008,	SR_X = 0x0010};/* Memory modules */struct _memory_segment {	char *name;	unsigned int base;	unsigned int *base_register;	unsigned int mask;	unsigned short interrupt_line;	char *code;	unsigned int code_len;	void (*fini)(struct _memory_segment *s);	char (*read)(struct _memory_segment *s, unsigned int *result, short size, unsigned int offset);	char (*write)(struct _memory_segment *s, short size, unsigned int offset, unsigned int value);	void (*reset)(struct _memory_segment *s);	void (*update)(struct _memory_segment *s);	void *data;	};struct _memory_module {	char *name;	void (*setup)(struct _memory_segment *s);};void memory_module_register(char *name, 		void (*setup)(struct _memory_segment *s));//void memory_module_setup_segment(char *module_name, char *data);void memory_module_setup_segment(char *module_name, int base_register, int base, int len);struct _memory_segment *memory_find_segment_for(unsigned int offset);void memory_core_set_reset_values(char *s);void memory_dump_segments(void);#endif

⌨️ 快捷键说明

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