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

📄 as31.h

📁 MCS51系列单片机的汇编器
💻 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. * */#include <stdio.h>/* ---------------------------------------------------------------------- * user / keyword symbol structures: */struct opcode {	char *name;	int type;	unsigned char *bytes;};struct symbol {	char *name;	char predefined;	char type;	long value;	struct symbol *next;};#define UNDEF	0#define LABEL	1/* these are unused... maybe someday the can be used and the *//* parser can check that each addressing mode is using the *//* correct type of data, or a generic LABEL type */#define BIT	2#define IMEM	3#define EMEM	3#define CONST	4#define REG	5/* ---------------------------------------------------------------------- * 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;};#define YYSTYPE union ystack/* ---------------------------------------------------------------------- * 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.  Use a prime number for best performance */#define HASHTABSIZE		4999/* ---------------------------------------------------------------------- * Macros to nicely test which pass we are in. */#define pass1			(!pass)#define pass2			(pass)/* from lexer.c */extern int yylex(void);extern int seek_eol(void);extern const char *get_last_token(void);extern int lineno;/* from parser.y */extern int yyparse(void);extern void clear_location_counter(void);/* from emitter.c */extern void emitusage(void);extern const char *emit_extension(const char *ftype);extern const char *emit_desc_lookup(int num);extern const char *emit_desc_to_name_lookup(const char *desc);extern int emitopen(const char *file, const char *ftype, const char *arg);extern void emitclose(void);extern void emitaddr(unsigned long a);extern void emitbyte(int b);/* from symbol.c */extern struct opcode *lookop(const char *s);extern struct symbol *looksym(const char *s);extern void syminit(void);extern void freesym(void);/* from run.c */extern int run_as31(const char *infile, int lst, int use_stdout,        const char *fmt, const char *arg);extern void error(const char *fmt, ...);extern void warn(const char *fmt, ...);extern void mesg_f(const char *fmt, ...);extern int dashl;extern int pass;extern int abort_asap;extern unsigned long lc;extern FILE *listing;/* from as31.c or as31_gtk.c */extern void mesg(const char *str);

⌨️ 快捷键说明

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