49 lines
1.1 KiB
C
49 lines
1.1 KiB
C
/*
|
|
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
|
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
|
*/
|
|
/* $Id$ */
|
|
#ifndef INSTRUCT_H_
|
|
#define INSTRUCT_H_
|
|
|
|
#ifndef _COST_
|
|
#include "cost.h"
|
|
#endif
|
|
|
|
#define AD_RO 01 /* Read only operand */
|
|
#define AD_WO 02 /* Write only operand */
|
|
#define AD_RW 03 /* Read-write operand */
|
|
#define AD_RWMASK 03 /* Mask to select these possiblities */
|
|
|
|
#define AD_CC 04 /* Condition codes set to this one */
|
|
|
|
typedef struct operand {
|
|
struct operand *o_next;
|
|
short o_setno;
|
|
short o_adorn;
|
|
} operand;
|
|
|
|
typedef struct instruction {
|
|
char *i_name;
|
|
short i_asname;
|
|
short i_nops;
|
|
operand *i_oplist;
|
|
struct varinfo *i_erases;
|
|
cost_t i_cost;
|
|
} instr_t,*instr_p;
|
|
|
|
extern instr_t l_instr[];
|
|
|
|
/*
|
|
* The read only information on the operands is not used at the moment.
|
|
* Predicted future use:
|
|
* When using :ro data it is possible to use a register in its stead
|
|
* if it contains the same information and is allowed as an operand
|
|
* in this place. Too difficult for now.
|
|
*/
|
|
struct varinfo;
|
|
|
|
struct varinfo *gen_inst(char *ident, int star);
|
|
|
|
#endif /* INSTRUCT_H_ */
|