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

📄 mem_iacxl10_2004_3_16.cpp

📁 自己编写的ARM处理器的指令集仿真
💻 CPP
字号:
#include "mem_IAcxl10_2004_3_16.h"#include <iostream.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>memarg_stru  rst;void mem(unsigned long addr,unsigned long* data,bool nrw,int mas,bool *){   unsigned long temp,half;   //printf("in mem(),addr=0x%x,data=0x%x,nrw=%d,mas=%d\n",addr,*data,nrw,mas);   temp = (*data);//cout<<"mas="<<hex<<mas<<" addr="<<addr<<endl;      if( nrw )   {            switch( mas )      {       case 0 : rst.memptr[addr] = ((char)(*data))&0xff;                break;       case 1:  if( (addr%4) > 1 )                   {                      temp = (temp << 16);                     half = (*((unsigned long*)rst.memptr + addr/4) & 0xffff);                     half = half + temp;                                                                    }                   else                   {                     half = (*((unsigned long*)rst.memptr + addr/4) & 0xffff0000);                                     half = half + temp;                   }                   // if( addr == 0x1fff8e ) cout<<"half="<<hex<<half<<endl;                    *((unsigned long*)rst.memptr + addr/4) = half;                break;       case 2:  *((unsigned long*)rst.memptr + addr/4) = temp;                break;       default: break;            }   }   else   {           switch( mas )     {       case 0 : (*data) =rst.memptr[addr]&0xff;               // if( addr == 0x1ffc8b ) cout<<"byte "<<hex<<(*data)<<endl;                break;       case 1 : if( (addr%4) > 1 )                  (*data) = *((unsigned long*)rst.memptr + addr/4) >> 16;                else                  (*data) = *((unsigned long*)rst.memptr + addr/4);                  (*data) = (*data) & 0xffff;                break;       case 2:  (*data)   = *((unsigned long*)rst.memptr + addr/4);                break;       default: break;     }        }     }             memarg_stru getmem(){            rst.memptr  = new char[2*1024*1024];      rst         = 2*1024*1024;           return rst;}void load(char* filename){     FILE*  fp;     char*  p;          p  = rst.memptr ;     fp = fopen(filename,"r");          if( fp == NULL )       {           cout<<"Can't open file "<<filename<<": No such file or directory"<<endl;           exit(0);       }     fseek(fp,0x8000,SEEK_SET);    fread(p,0x19200,0x19200,fp);       // fclose(fp);  //     fseek(fp,0x34,SEEK_SET);   //   fread(p,0x37,0x37,fp);}/*void load(char *program,unsigned long addr,int size){  FILE *fp;  char *p;  int i;  //printf("in load(),addr=0x%x\n",addr);  p=rst.memptr+addr;  fp=fopen(program,"r");  if(fp == NULL)    {      printf("cannot open file %s\n",program);      return;    }  fseek(fp,0x8000+addr,SEEK_SET);  fread(p,sizeof(char),size,fp);  fclose(fp);}*/

⌨️ 快捷键说明

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