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

📄 setmach.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include	<u.h>#include	<libc.h>#include	<bio.h>#include	<mach.h>		/* table for selecting machine-dependent parameters */typedef	struct machtab Machtab;struct machtab{	char		*name;			/* machine name */	short		type;			/* executable type */	short		boottype;		/* bootable type */	int		asstype;		/* disassembler code */	Mach		*mach;			/* machine description */	Machdata	*machdata;		/* machine functions */};extern	Mach		mmips, msparc, m68020, mi386, mamd64,			marm, mmips2be, mmips2le, mpower, malpha, msparc64;extern	Machdata	mipsmach, sparcmach, m68020mach, i386mach,			armmach, mipsmach2le, powermach, alphamach, sparc64mach;/* *	machine selection table.  machines with native disassemblers should *	follow the plan 9 variant in the table; native modes are selectable *	only by name. */Machtab	machines[] ={	{	"68020",			/*68020*/		F68020,		F68020B,		A68020,		&m68020,		&m68020mach,	},	{	"68020",			/*Next 68040 bootable*/		F68020,		FNEXTB,		A68020,		&m68020,		&m68020mach,	},	{	"mips2LE",			/*plan 9 mips2 little endian*/		FMIPS2LE,		0,		AMIPS,		&mmips2le,		&mipsmach2le, 	},	{	"mips",				/*plan 9 mips*/		FMIPS,		FMIPSB,		AMIPS,		&mmips,		&mipsmach, 	},	{	"mips2",			/*plan 9 mips2*/		FMIPS2BE,		FMIPSB,		AMIPS,		&mmips2be,		&mipsmach, 	},		/* shares debuggers with native mips */	{	"mipsco",			/*native mips - must follow plan 9*/		FMIPS,		FMIPSB,		AMIPSCO,		&mmips,		&mipsmach,	},	{	"sparc",			/*plan 9 sparc */		FSPARC,		FSPARCB,		ASPARC,		&msparc,		&sparcmach,	},	{	"sunsparc",			/*native sparc - must follow plan 9*/		FSPARC,		FSPARCB,		ASUNSPARC,		&msparc,		&sparcmach,	},	{	"386",				/*plan 9 386*/		FI386,		FI386B,		AI386,		&mi386,		&i386mach,	},	{	"86",				/*8086 - a peach of a machine*/		FI386,		FI386B,		AI8086,		&mi386,		&i386mach,	},	{	"amd64",			/*amd64*/		FAMD64,		FAMD64B,		AAMD64,		&mamd64,		&i386mach,	},	{	"arm",				/*ARM*/		FARM,		FNONE,		AARM,		&marm,		&armmach,	},	{	"power",			/*PowerPC*/		FPOWER,		FPOWERB,		APOWER,		&mpower,		&powermach,	},	{	"alpha",			/*Alpha*/		FALPHA,		FALPHAB,		AALPHA,		&malpha,		&alphamach,	},	{	"sparc64",			/*plan 9 sparc64 */		FSPARC64,		FSPARCB,			/* XXX? */		ASPARC64,		&msparc64,		&sparc64mach,	},	{	0		},		/*the terminator*/};/* *	select a machine by executable file type */voidmachbytype(int type){	Machtab *mp;	for (mp = machines; mp->name; mp++){		if (mp->type == type || mp->boottype == type) {			asstype = mp->asstype;			machdata = mp->machdata;			break;		}	}}/* *	select a machine by name */intmachbyname(char *name){	Machtab *mp;	if (!name) {		asstype = AMIPS;		machdata = &mipsmach;		mach = &mmips;		return 1;	}	for (mp = machines; mp->name; mp++){		if (strcmp(mp->name, name) == 0) {			asstype = mp->asstype;			machdata = mp->machdata;			mach = mp->mach;			return 1;		}	}	return 0;}

⌨️ 快捷键说明

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