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

📄 memory.h

📁 ppc750 system design simulator using system c
💻 H
字号:
/***************************************************************************                          memory.h  -  description                             -------------------    begin                : Wed Sep 26 2001    copyright            : (C) 2001 Universite Paris Sud and CEA    author               : Gilles Mouchard    email                : gilles.mouchard@lri.fr, gilles.mouchard@cea.fr ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#ifndef __MEMORY_H__#define __MEMORY_H__#include <misc.h>#include <stdio.h>#define MEMORY_PAGE_SIZE 4096#define PRIMARY_MEMORY_HASH_TABLE_SIZE 4096#define SECONDARY_MEMORY_HASH_TABLE_SIZE 16typedef struct{	/* Memory interface */	byte_t (*mem_read_byte)(void *, addr_t);	void (*mem_write_byte)(void *, addr_t, byte_t);	halfword_t (*mem_read_half_word)(void *, addr_t);	void (*mem_write_half_word)(void *, addr_t, halfword_t);	word_t (*mem_read_word)(void *, addr_t);	void (*mem_write_word)(void *, addr_t, word_t);	dword_t (*mem_read_dword)(void *, addr_t);	void (*mem_write_dword)(void *, addr_t, dword_t);	void (*mem_set)(void *, addr_t, byte_t, int);	void (*mem_read)(void *, void *, addr_t, int);	void (*mem_write)(void *, addr_t, void *, int);		void *instance;} memory_cb_t;typedef struct memory_page_table_entry_t{	addr_t addr;	struct memory_page_table_entry_t *next;	byte_t *storage;} memory_page_table_entry_t;typedef struct{	memory_page_table_entry_t *pte[SECONDARY_MEMORY_HASH_TABLE_SIZE];} secondary_memory_hash_table_t;typedef struct{	secondary_memory_hash_table_t *primary_hash_table[PRIMARY_MEMORY_HASH_TABLE_SIZE];} memory_t;extern memory_t *mem;#if defined(__cplusplus)extern "C" {#endifextern memory_t *mem_create();extern byte_t mem_read_byte(memory_t *mem, addr_t addr);extern void mem_write_byte(memory_t *mem, addr_t addr, byte_t value);extern halfword_t mem_read_half_word(memory_t *mem, addr_t addr);extern void mem_write_half_word(memory_t *mem, addr_t addr, halfword_t value);extern word_t mem_read_word(memory_t *mem, addr_t addr);extern void mem_write_word(memory_t *mem, addr_t addr, word_t value);extern dword_t mem_read_dword(memory_t *mem, addr_t addr);extern void mem_write_dword(memory_t *mem, addr_t addr, dword_t value);extern halfword_t mem_read_half_word_byte_reverse(memory_t *mem, addr_t addr);extern void mem_write_half_word_byte_reverse(memory_t *mem, addr_t addr, halfword_t value);extern word_t mem_read_word_byte_reverse(memory_t *mem, addr_t addr);extern void mem_write_word_byte_reverse(memory_t *mem, addr_t addr, word_t value);extern dword_t mem_read_dword_byte_reverse(memory_t *mem, addr_t addr);extern void mem_write_dword_byte_reverse(memory_t *mem, addr_t addr, dword_t value);extern void mem_set(memory_t *mem, addr_t addr, byte_t value, int size);extern void mem_read(memory_t *mem, void *buf, addr_t addr, int size);extern void mem_write(memory_t *mem, addr_t, void *buf, int size);extern addr_t mem_align_to_page_boundary(addr_t addr);extern void mem_delete(memory_t *mem);extern void mem_save(memory_t *mem, FILE *f);extern void mem_restore(memory_t *mem, FILE *f);extern void mem_duplicate(memory_t *mem, memory_cb_t *cb);#if defined(__cplusplus)}#endif#define MEM_READ_BYTE(addr) mem_read_byte(mem, addr)#define MEM_WRITE_BYTE(addr, value) mem_write_byte(mem, addr, value)#define MEM_READ_HALF_WORD(addr) mem_read_half_word(mem, addr)#define MEM_WRITE_HALF_WORD(addr, value) mem_write_half_word(mem, addr, value)#define MEM_READ_WORD(addr) mem_read_word(mem, addr)#define MEM_WRITE_WORD(addr, value) mem_write_word(mem, addr, value)#define MEM_READ_DWORD(addr) mem_read_dword(mem, addr)#define MEM_WRITE_DWORD(addr, value) mem_write_dword(mem, addr, value)#define MEM_READ_HALF_WORD_BYTE_REVERSE(addr) mem_read_half_word_byte_reverse(mem, addr)#define MEM_WRITE_HALF_WORD_BYTE_REVERSE(addr, value) mem_write_half_word_byte_reverse(mem, addr, value)#define MEM_READ_WORD_BYTE_REVERSE(addr) mem_read_word_byte_reverse(mem, addr)#define MEM_WRITE_WORD_BYTE_REVERSE(addr, value) mem_write_word_byte_reverse(mem, addr, value)#define MEM_READ_DWORD_BYTE_REVERSE(addr) mem_read_dword_byte_reverse(mem, addr)#define MEM_WRITE_DWORD_BYTE_REVERSE(addr, value) mem_write_dword_byte_reverse(mem, addr, value)#define MEM_SET(addr, value, size) mem_set(mem, addr, value, size)#define MEM_READ(buf, addr, size) mem_read(mem, buf, addr, size)#define MEM_WRITE(addr, buf, size) mem_write(mem, addr, buf, size)#endif

⌨️ 快捷键说明

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