📄 memory.cpp
字号:
#include "memory.h"
Memory::Memory()
{
pCodeNail=0;
pDataNail=0;
pVarNail=0;
}
int Memory::InsertData(int values)
{
BYTE tempValue;
tempValue=(BYTE)((values&0xff00)>>8);
DataSegment[pDataNail]=tempValue;
pDataNail++;
tempValue=(BYTE)(values&0x00ff);
DataSegment[pDataNail]=tempValue;
pDataNail++;
return pDataNail-2;
}
int Memory::InsertIntoMemory(char va,int values)
{
var[pVarNail]=va;
int i=InsertData(values);
addrOfVar[pVarNail]=i;
styOfVar[pVarNail]=INTS;
pVarNail++;
return i;
}
int Memory::InsertIntoMemory(char va,char values)
{
var[pVarNail]=va;
addrOfVar[pVarNail]=pDataNail;
styOfVar[pVarNail]=CHARS;
DataSegment[pDataNail]=(BYTE)values;
pDataNail++;
pVarNail++;
return pDataNail-1;
}
void Memory::InsertCode(BYTE code)
{
CodeSegment[pCodeNail]=code;
pCodeNail++;
}
int Memory::FindVarAddr(char va)
{
int temp=0;
while (temp<pVarNail)
{
if (var[temp]==va)
{
return addrOfVar[temp];
}
temp++;
}
return -1;
}
style Memory::GetVarStyle(char va)
{
int i=0;
while (i<pVarNail)
{
if (var[i]==va)
{
return styOfVar[i];
}
i++;
}
return EMPTY;
}
void Memory::ChangeValues(int addr,int values)
{
BYTE tempByte;
int tempAddr=addr;
tempByte=(BYTE)((values&0xff00)>>8);
DataSegment[tempAddr]=tempByte;
tempAddr++;
tempByte=(BYTE)(values&0x00ff);
DataSegment[tempAddr]=tempByte;
}
void Memory::MemoryClear()
{
pVarNail=0;
pDataNail=0;
pCodeNail=0;
}
void Memory::MemoryCodeClear()
{
pCodeNail=0;
}
int Memory::GetCodeLength()
{
return pCodeNail;
}
void Memory::ChangeValues(int addr,BYTE values)
{
DataSegment[addr]=values;
}
BYTE Memory::ReadData(int addr)
{
return DataSegment[addr];
}
void Memory::OutPutCodeMemory(char * name)
{
FILE * fp=fopen(name,"wb+");
if (pCodeNail>0)
{
// fwrite(CodeSegment,sizeof(BYTE),pCodeNail,fp);
char * a=new char[9*pCodeNail];
for (int i=0;i<9*pCodeNail;i++)
{
int IP=i/9;
int offset=i%9;
if (offset==8)
{
a[i]=' ';
}
else
{
int tempInt=(int)(CodeSegment[IP]>>(7-offset));
if (tempInt==1)
a[i]='1';
else
a[i]='0';
}
}
fwrite(a,sizeof(char),9*pCodeNail,fp);
delete a;
}
fclose(fp);
}
void Memory::OutPutDataMemory(char * name)
{
FILE * fp=fopen(name,"wb+");
if (pDataNail>0)
{
// fwrite(CodeSegment,sizeof(BYTE),pCodeNail,fp);
char * a=new char[9*pDataNail];
for (int i=0;i<9*pDataNail;i++)
{
int IP=i/9;
int offset=i%9;
if (offset==8)
{
a[i]=' ';
}
else
{
int tempInt=(int)(DataSegment[IP]>>(7-offset));
if (tempInt==1)
a[i]='1';
else
a[i]='0';
}
}
fwrite(a,sizeof(char),9*pDataNail,fp);
delete a;
}
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -