home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OpenStep 4.2J (Developer)
/
os42jdev.iso
/
NextDeveloper
/
Source
/
GNU
/
cctools
/
as
/
relax.h
< prev
next >
Wrap
Text File
|
1993-09-09
|
2KB
|
45 lines
/* The type used for a target address */
typedef unsigned long relax_addressT;
/*
* relax_stateT is a fragment's type and stored in a struct frag's fr_type
* field.
*/
typedef enum {
rs_fill, /* Variable chars to be repeated fr_offset */
/* times. Fr_symbol unused. */
/* Used with fr_offset == 0 for a constant */
/* length frag. */
rs_align, /* Align: Fr_offset: power of 2. */
/* 1 variable char: fill character. */
rs_org, /* Org: Fr_offset, fr_symbol: address. */
/* 1 variable char: fill character. */
rs_machine_dependent,
} relax_stateT;
/*
* For machine dependent fragments, a struct frag's who's fr_type field is
* rs_machine_dependent it's substate is stored in the struct frag's fr_subtype;
* field. The substate is used to index in to md_relax_table by relax_section()
* in layout.c to drive the span dependent branch algorithm of the assembler.
* The substate is a machine dependent indication of what type of branch
* instruction this fragment is.
*/
typedef unsigned long relax_substateT;
/*
* relax_typeS is the structure that is the entry in the md_relax_table array.
* It is indexed into by the substate of a fragment for machine depependent
* branches that have variable sizes. The entry tell how far this branch can
* reach, rlx_forward and rlx_backward, as well as the size of branch,
* rlx_length, and which substate go to, rlx_more, if this sized branch can't
* reach it's target.
*/
typedef struct {
long rlx_forward; /* Forward reach. Signed number. > 0. */
long rlx_backward; /* Backward reach. Signed number. < 0. */
unsigned char rlx_length; /* Bytes length of this address. */
relax_substateT rlx_more; /* Next longer relax-state. */
/* 0 means there is no 'next' relax-state. */
} relax_typeS;