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

📄 common.h

📁 這是一個8051的模擬器 以java寫成
💻 H
字号:

/*
 * Disassembler common routines
 * Copyright (C) 1995-2005 by Jeffery L. Post
 * theposts <AT> pacbell <DOT> net
 *
 * common.h - Support routines
 *
 * Version 3.3.6 - 01/15/05
 *
 *	This program is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 2 of the License, or
 *	(at your option) any later version.
 *
 *	This program is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *	GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 */

#ifdef	EXTENDED_MEM
#define	EXT_PGM_SEGS	8	/* maximum number of extended segments: 8 * 64kb = 512kb */
#endif

// Global variables

extern char	src[FN_LEN], dst[FN_LEN];	// file name buffers
extern char	baseFileName[FN_LEN];		// source file name without extension
extern char	ctl[FN_LEN];					// control file name
extern char	linebuffer[MAX_LINE];		// input line buffer
extern FILE	*fp;								// dos file struct
extern int	hexflag;							// append hex flag
extern int	fileflag;						// file type flag
extern int	upperflag;						// upper case output flag
extern int	kcnt;								// output char counter
extern int	pc;								// current program counter
extern int	himark;							// highest data adrs
extern int	offset;							// program counter offset
extern byte	*pgmmem;							// program data pointer
extern int	*pgmflags;						// pointer to program flags

#ifdef	EXTENDED_MEM
extern byte	*epgmmem[EXT_PGM_SEGS];		// extended program memory pointers
extern int	*epgmflags[EXT_PGM_SEGS];	// extended program flags pointers
#endif

extern char	string[ASCLIMIT];				// ascii data for defb
extern int	asc_cnt;							// count for string data
extern byte	byte_data[BYTELIMIT];		// binary data for defb
extern int	byte_cnt;						// count for binary data
extern int	word_data[WORDLIMIT];		// binary data for defw
extern int	word_cnt;						// count for word data
extern byte	dump;								// dump just done flag
extern byte	ascii_flag;						// use ascii string flag
extern char	defbstr[8];						// string for defined bytes
extern char	defwstr[8];						// string for defined words
extern char	ascistr[8];						// string for defined ascii
extern char	orgstr[4];						 // org pseudo-op string
extern char	equstr[4];						 // equ pseudo-op string

extern struct sym	*sym_tab;					// symbol table pointer
extern struct sym	*lab_tab;					// label table pointer
extern struct sym	*name_tab;					// operand names pointer
extern struct sym	*sym_tab_last;				// last symbol table pointer
extern struct sym	*lab_tab_last;				// lastlabel table pointer
extern struct sym	*name_tab_last;			// last name table pointer
extern int			symbol_count;				// number of symbols
extern int			label_count;				// number of labels
extern int			name_count;					// number of operand names

extern SYM_PTR		*sym_val_index;			// array of pointers
extern SYM_PTR		*lab_val_index;			//  for binary search
extern SYM_PTR		*name_val_index;
extern struct sym	*tail_ptr, *head_ptr;	// sort pointers

extern struct comment	*comment_list;		// header comment list
extern struct comment	*icomment_list;	// inline comment list
extern struct comment	*patch_list;		// patch list

extern int			newline;						// just output newline flag
extern struct tm	*date_time;					// disassembly time

//
// Prototypes
//

extern bool			init_memory(void);

#ifdef	EXTENDED_MEM
extern byte			*get_extended_mem(int width);
#endif

extern char			*makeupper(char *str);
extern int			parseFileName(char *str, char *ext);
extern int			readfile(char *filename);
extern void			getcode(char *from, byte *loc);
extern char			*get_adrs(char *text, int *val);
extern void			error(char *str1, char *str2);			// fatal error trap
extern struct sym	*sort(struct sym *list, SYM_PTR *array, int count);
extern struct sym	*sort_by_name(struct sym *list);
extern struct sym	*sort_by_value(struct sym *list);
extern struct sym	*merge_by_name(struct sym *a, struct sym *b);
extern struct sym	*merge_by_value(struct sym *a, struct sym *b);
extern void			chk_dup_name(struct sym *list, int count);
extern void			chk_dup_op_name(struct sym *list, int count);
extern void			chk_dup_value(struct sym *list, int count);
extern char			*find_entry(int val, int count, SYM_PTR *table);
extern SYM_PTR		find_name(char *name, int count, SYM_PTR *table);
extern struct sym	*get_smem(int type, int req_size);
extern void			add_entry(int val, char *symbol, int type);
extern void			output_comment(int adrs);
extern void			output_icomment(int adrs);
extern void			output_patch(int adrs);
extern void			add_comment(int adrs, char *str);
extern void			add_icomment(int adrs, char *str);
extern void			add_patch(int adrs, char *str);
extern void			puthex(int j);
extern int			ascii(int i);
extern int			is_ascii(byte data);
extern int			atox(char *str);
extern void			splitcheck(int i);
extern void			chk_ref(int i);
extern void			chk_label(int i);
extern void			doopcode(char *mnem);
extern void			dump_ascii(int adrs);
extern void			dump_bytes(int adrs);

// end of common.h

⌨️ 快捷键说明

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