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

📄 as31.h

📁 有想用的自己看吧
💻 H
字号:
/* ---------------------------------------------------------------------- * FILE: as31.h * PACKAGE: as31 - 8031/8051 Assembler. * * DESCRIPTION: *	The sole header file for the 8031/8051 assembler package. *	It defines several structures used by the yacc stack. *	It defines several macros for testing the bitsize of numeric *	quantities. * *	Some macros to extract information from the mode structure. * * REVISION HISTORY: *	Jan. 19, 1990 - Created. (Ken Stauffer) * * AUTHOR: *	All code in this file written by Ken Stauffer (University of Calgary). *	January, 1990. * *//* ---------------------------------------------------------------------- * user / keyword symbol structures: */struct opcode {	char *name;	int type;	unsigned char *bytes;};struct symbol {	char *name;	int type;	long value;	struct symbol *next;};#define UNDEF	0#define LABEL	1/* ---------------------------------------------------------------------- * addressing mode stuff: */struct mode {	unsigned char mode;		/* value to index with */	unsigned char size;		/* # of bytes used */	unsigned char orval;		/* value OR'd to obcode */	unsigned char byte1;		/* extra byte 1 */	unsigned char byte2;		/* extra byte 2 */};#define set_md(m,a)	((m).mode=(a))#define set_sz(m,a)	((m).size=(a))#define set_ov(m,a)	((m).orval=(a))#define set_b1(m,a)	((m).byte1=(a))#define set_b2(m,a)	((m).byte2=(a))#define get_md(m)	((m).mode)#define get_sz(m)	((m).size)#define get_ov(m)	((m).orval)#define get_b1(m)	((m).byte1)#define get_b2(m)	((m).byte2)/* ---------------------------------------------------------------------- * yacc stack stuff: */struct value {	long v;	unsigned char d;		/* expression defined flag */};union ystack {	long value;	struct value val;	struct opcode *op;	struct symbol *sym;	struct mode mode;	char *str;};/* ---------------------------------------------------------------------- * IS_BIT_MAPPED_RAM: *	True is the byte 'a' is the byte address of a bit mapped *	RAM location. */#define isbmram(a)	(((a)&0xf0)==0x20)/* ---------------------------------------------------------------------- * IS_BIT_MAPPED_SFR: *	True is the byte 'a' is the byte address of a bit mapped *	SPECIAL FUCTION REGISTER. */#define isbmsfr(a)	(((a)&0x80) && !((a) & 0x07))/* ---------------------------------------------------------------------- * isbit8, ... *	Macros to check the sizes of values and to convert *	a value to a certain, size. * */#define size8		(~0x00ff)#define size11		(~0x07ff)#define size13		(~0x1fff)#define size16		(~0xffff)#define size10		(~0x03ff)#define size12		(~0x0fff)#define size15		(~0x7fff)#define isbit8(v)	( !( ((v)>=0) ? (v)&size8 : -(v)>=128) )#define isbit11(v)	( !( ((v)>=0) ? (v)&size11 : (-(v))&size10 ) )#define isbit13(v)	( !( ((v)>=0) ? (v)&size13 : (-(v))&size12 ) )#define isbit16(v)	( !( ((v)>=0) ? (v)&size16 : (-(v))&size15 ) )/* ---------------------------------------------------------------------- * Size of user hash table. */#define HASHTABSIZE		1000/* ---------------------------------------------------------------------- * Macros to nicely test which pass we are in. */#define pass1			(!pass)#define pass2			(pass)/* -------- TOKENS ------------------------------------------------------ * * This includes the header file generated by yacc -d. * NOPE is defined inside of as31.y, which does not * need to re-include the tokens twice, thus NOPE prevents this. * */#ifdef NOPE#else#include "y.tab.h"#endif

⌨️ 快捷键说明

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