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

📄 d.c

📁 nachos test nachos 有关实验
💻 C
字号:
/* Copyright (c) 1992-1993 The Regents of the University of California. All rights reserved.  See copyright.h for copyright notice and limitation  of liability and disclaimer of warranty provisions. */#include "copyright.h"#include "instr.h"#include "encode.h"#define NULL	0int sptr;int longdis = 1;extern char *normalops[], *specialops[];char *regstrings[] ={"0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9","r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19","r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "gp", "sp","r30", "r31"};#define R(i)	regstrings[i]dump_ascii(instruction, pc)int instruction, pc;{	int addr;	char *s;	int opcode;	if  ( longdis )  printf("%08x: %08x  ", pc, instruction);	printf("\t");	opcode = (unsigned) instruction >> 26;	if ( instruction == I_NOP) {	  printf("nop");	}	else if  ( opcode == I_SPECIAL )	{		opcode = instruction & 0x3f;		printf("%s\t", specialops[opcode]);		switch( opcode )		{			/* rd,rt,shamt */			case I_SLL:			case I_SRL:			case I_SRA:				printf("%s,%s,0x%x", 					R(rd(instruction)),					R(rt(instruction)),					shamt(instruction));				break;			/* rd,rt,rs */			case I_SLLV:			case I_SRLV:			case I_SRAV:				printf("%s,%s,%s", 					R(rd(instruction)),					R(rt(instruction)),					R(rs(instruction)));				break;			/* rs */			case I_JR:			case I_JALR:			case I_MFLO:			case I_MTLO:				printf("%s", R(rs(instruction)));				break;			case I_SYSCALL:			case I_BREAK:				break;			/* rd */			case I_MFHI:			case I_MTHI:				printf("%s", R(rd(instruction)));				break;			/* rs,rt */			case I_MULT:			case I_MULTU:			case I_DIV:			case I_DIVU:				printf("%s,%s", 					R(rs(instruction)),					R(rt(instruction)));				break;			/* rd,rs,rt */ 			case I_ADD:			case I_ADDU:			case I_SUB:			case I_SUBU:			case I_AND:			case I_OR:			case I_XOR:			case I_NOR:			case I_SLT:			case I_SLTU:				printf("%s,%s,%s", 					R(rd(instruction)),					R(rs(instruction)),					R(rt(instruction)));				break;		}	}	else if  ( opcode == I_BCOND )	{		switch ( rt(instruction) )	/* this field encodes the op */		{		    case I_BLTZ:		            printf("bltz");			    break;		    case I_BGEZ:			    printf("bgez");			    break;		    case I_BLTZAL:			    printf("bltzal");			    break;		    case I_BGEZAL:			    printf("bgezal");			    break;		    default :		            printf("BCOND");		}		printf("\t%s,%08x",		       R(rs(instruction)),		       off16(instruction)+pc+4);	}	else	{		printf("%s\t", normalops[opcode]);		switch ( opcode )		{			/* 26-bit_target */			case I_J:			case I_JAL:		                printf("%08x",				       top4(pc)|off26(instruction));				break;			/* rs,rt,16-bit_offset */			case I_BEQ:			case I_BNE:		                printf("%s,%s,%08x",				       R(rt(instruction)),				       R(rs(instruction)),				       off16(instruction)+pc+4);				break;			/* rt,rs,immediate */			case I_ADDI:			case I_ADDIU:			case I_SLTI:			case I_SLTIU:			case I_ANDI:			case I_ORI:			case I_XORI:				printf("%s,%s,0x%x", 					R(rt(instruction)),					R(rs(instruction)),					immed(instruction));				break;			 /* rt, immed */			case I_LUI:				printf("%s,0x%x", 					R(rt(instruction)),					immed(instruction));				break;			/* coprocessor garbage */			case I_COP0:			case I_COP1:			case I_COP2:			case I_COP3:				break;			/* rt,offset(rs) */			case I_LB:			case I_LH:			case I_LWL:			case I_LW:			case I_LBU:			case I_LHU:			case I_LWR:			case I_SB:			case I_SH:			case I_SWL:			case I_SW:			case I_SWR:			case I_LWC0:			case I_LWC1:			case I_LWC2:			case I_LWC3 :			case I_SWC0:			case I_SWC1:			case I_SWC2:			case I_SWC3:				printf("%s,0x%x(%s)", 					R(rt(instruction)),					immed(instruction),					R(rs(instruction)));				break;		}	}}

⌨️ 快捷键说明

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