4.4BSD/usr/src/old/as.vax/assizetab.c

Compare this file to the similar file:
Show the results in this format:

/*
 * Copyright (c) 1982 Regents of the University of California.
 * All rights reserved.  The Berkeley software License Agreement
 * specifies the terms and conditions for redistribution.
 */

#ifndef lint
static char sccsid[] = "@(#)assizetab.c	5.1 (Berkeley) 4/30/85";
#endif not lint

#ifdef AS
#include <stdio.h>
#include "as.h"
#include "assyms.h"

/*
 *	Convert loader reference types (plus PCREL) to bytes and lg bytes
 */
int	reflen[] = { 	/* {LEN*+PCREL} ==> number of bytes */
	0,	0,
	1,	1,	/* LEN1,	LEN1 + PCREL */
	2,	2,	/* LEN2,	LEN2 + PCREL */
	4,	4,	/* LEN4,	LEN2 + PCREL */
	8,	8,	/* LEN8,	LEN2 + PCREL */
	16,	16	/* LEN16,	LEN16 + PCREL */
};	
int	lgreflen[] = { 	/* {LEN*+PCREL} ==> number of bytes */
	-1,	-1,
	0,	0,	/* LEN1,	LEN1 + PCREL */
	1,	1,	/* LEN2,	LEN2 + PCREL */
	2,	2,	/* LEN4,	LEN2 + PCREL */
	3,	3,	/* LEN8,	LEN2 + PCREL */
	4,	4	/* LEN16,	LEN16 + PCREL */
};	

/*
 *	Convert sizes to loader reference types and type flags
 */
/*0	1	2	3	4	5	6	7	8*/
/*
 *	Convert {1,2,4,8} into {LEN1, LEN2, LEN4, LEN8}
 */
int	len124[] = {
	0,	LEN1,	/* 0 */
	LEN2,	0,	/* 2 */
	LEN4,	0,	/* 4 */
	0,	0,	/* 6 */
	LEN8,	0,	/* 8 */
	0,	0,	/* 10 */
	0,	0,	/* 12 */
	0,	0,	/* 14 */
	LEN16,	0	/* 16 */
};
/*
 *	Convert {1,2,4,8} into {bits to construct operands}
 */
char	mod124[] = {
	0,	0x00,	/* 0 */
	0x20,	0,	/* 2 */
	0x40,	0,	/* 4 */
	0,	0,	/* 6 */
	0,	0,	/* 8 */
	0,	0,	/* 10 */
	0,	0,	/* 12 */
	0,	0,	/* 14 */
	0,	0	/* 16 */
};
/*
 *	{1,2,4,8} into {TYPB, TYPW, TYPL, TYPQ}
 */
int	type_124[] = {
	0,	TYPB,	/* 0 */
	TYPW,	0,	/* 2 */
	TYPL,	0,	/* 4 */
	0,	0,	/* 6 */
	TYPQ,	0,	/* 8 */
	0,	0,	/* 10 */
	0,	0,	/* 12 */
	0,	0,	/* 14 */
	TYPO,	0	/* 16 */
};
#endif AS
/*
 *	Convert TYP[BWLQOFDGH] into {1 if relocation not OK}
 */
int	ty_NORELOC[] = {
	0,	/* TYPB */
	0,	/* TYPW */
	0,	/* TYPL */
	1,	/* TYPQ */
	1,	/* TYPO */
	1,	/* TYPF */
	1,	/* TYPD */
	1,	/* TYPG */
	1,	/* TYPH */
	1	/* TYPNONE */
};
#ifndef ADB
/*
 *	Convert TYP[BWLQOFDGH] into {1 if a floating point number}
 */
int	ty_float[] = {
	0,	/* TYPB */
	0,	/* TYPW */
	0,	/* TYPL */
	0,	/* TYPQ */
	0,	/* TYPO */
	1,	/* TYPF */
	1,	/* TYPD */
	1,	/* TYPG */
	1,	/* TYPH */
	0	/* TYPNONE */
};
#endif
#ifdef AS
/*
 *	Convert TYP[BWLQOFDGH] into {LEN1 ... LEN16}
 */
int	ty_LEN[] = {
	LEN1,	/* TYPB */
	LEN2,	/* TYPW */
	LEN4,	/* TYPL */
	LEN8,	/* TYPQ */
	LEN16,	/* TYPO */
	LEN4,	/* TYPF */
	LEN8,	/* TYPD */
	LEN8,	/* TYPG */
	LEN16,	/* TYPH */
	0	/* TYPNONE */
};
#endif AS
/*
 *	Convert TYP[BWLQOFDGH] into {1 ... 16}
 */
int	ty_nbyte[] = {
	1,	/* TYPB */
	2,	/* TYPW */
	4,	/* TYPL */
	8,	/* TYPQ */
	16,	/* TYPO */
	4,	/* TYPF */
	8,	/* TYPD */
	8,	/* TYPG */
	16,	/* TYPH */
	0	/* TYPNONE */
};
#ifndef ADB
/*
 *	Convert TYP[BWLQOFDGH] into lg{1 ... 16}
 */
int	ty_nlg[] = {
	0,	/* TYPB */
	1,	/* TYPW */
	2,	/* TYPL */
	3,	/* TYPQ */
	4,	/* TYPO */
	2,	/* TYPF */
	3,	/* TYPD */
	3,	/* TYPG */
	4,	/* TYPH */
	-1	/* TYPNONE */
};
/*
 *	Convert TYP[BWLQOFDGH] into strings
 */
char	*ty_string[] = {
	"byte",		/* TYPB */
	"word",		/* TYPW */
	"long",		/* TYPL */
	"quad",		/* TYPQ */
	"octa",		/* TYPO */
	"f_float",	/* TYPF */
	"d_float",	/* TYPD */
	"g_float",	/* TYPG */
	"h_float",	/* TYPH */
	"unpackd",	/* TYPUNPACKED */
	"??snark??"	/* TYPNONE */
};
#endif