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

📄 asscache.java

📁 一个java实现的用于模拟LRU文法分析的程序
💻 JAVA
字号:
public class AssCache {
	Cache[] assCache=new Cache[4];//4 Cache Block
	public AssCache() {//初始化
		for(int i=0;i<4;i++) {
			assCache[i]=new Cache();
		}
	}
	public boolean isnotfull()//not full
	{//judge the cache set is full or not
		boolean flag=false;
		for(int i=0;i<4;i++) {
			if(assCache[i].block==' ') {
				flag=true;
				break;
			}
		}
		return flag;
	}
	
	/*judge hit or not*/
	public boolean ishit(char c) {
		boolean flag=false;
		for(int i=0;i<4;i++) {
			if(assCache[i].block==c) {
				flag=true;
				break;
			}
			
		}
		return flag;
	}
	public void hitopt(char c) {//hit operation
		for(int i=0;i<4;i++) {
		if(assCache[i].block==c)
			assCache[i].age=0;
		else if(assCache[i].age>=0)
			assCache[i].age=assCache[i].age+1;	
				}	
	}
	public int lruseq()
	{//找到最久未使用的块的序号
		//Cache temp=new Cache();
		int seq=0;
		for(int i=1;i<4;i++) {
			if(assCache[seq].age<assCache[i].age)
				seq=i;
		}
		return seq;
	}
	public int findlocation(char c) {//找到c所在的cache块
		int temp=0;
		for(int i=0;i<4;i++) {
			if(assCache[i].block==c) {
				temp=i;
				break;
			}
		}
		return temp;
	}
	public void place(char c) {//将一个块调入空的cache
		for(int i=0;i<4;i++) {
			if(assCache[i].block!=' ')
			{//未使用的最长时间+1
				assCache[i].age=assCache[i].age+1;
			}
		}
		for(int i=0;i<4;i++) {
			if(assCache[i].block==' ')
			{//选择一个空cache将内存调入	
				assCache[i].block=c;
				assCache[i].age=0;
				break;
			}
		}
	}
	public void replace(char c,int seq) {
		assCache[seq].block=c;
		assCache[seq].age=0;
		for(int i=0;i<4;i++) {
			if(i!=seq)
				assCache[i].age=assCache[i].age+1;
		}
	}
	public String blocktoString() {
		String temp="";
		for(int i=0;i<4;i++) {
			temp+=(assCache[i].block+" "+assCache[i].age+"\n");
		}
		return temp;
	}
	public String cache0bblock() {
		return assCache[0].block+"";
	}
	public String cache1bblock() {
		return assCache[1].block+"";
	}
	public String cache2bblock() {
		return assCache[2].block+"";
	}
	public String cache3bblock() {
		return assCache[3].block+"";
	}
}

⌨️ 快捷键说明

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