524 lines
5 KiB
C
524 lines
5 KiB
C
#define NSYM 50
|
|
#define NSNAME 8
|
|
|
|
/* R0 is return */
|
|
#define REGEXT 7
|
|
/* A7 is sp A6 is sb */
|
|
#define AREGEXT 5
|
|
/* F0 is ret */
|
|
#define FREGEXT 7
|
|
|
|
enum as
|
|
{
|
|
AXXX = 0,
|
|
AABCD,
|
|
AADDB,
|
|
AADDL,
|
|
AADDW,
|
|
AADDXB,
|
|
AADDXL,
|
|
AADDXW,
|
|
AADJSP,
|
|
AANDB,
|
|
AANDL,
|
|
AANDW,
|
|
AASLB,
|
|
AASLL,
|
|
AASLW,
|
|
AASRB,
|
|
AASRL,
|
|
AASRW,
|
|
ABCASE,
|
|
ABCC,
|
|
ABCHG,
|
|
ABCLR,
|
|
ABCS,
|
|
ABEQ,
|
|
ABFCHG,
|
|
ABFCLR,
|
|
ABFEXTS,
|
|
ABFEXTU,
|
|
ABFFFO,
|
|
ABFINS,
|
|
ABFSET,
|
|
ABFTST,
|
|
ABGE,
|
|
ABGT,
|
|
ABHI,
|
|
ABKPT,
|
|
ABLE,
|
|
ABLS,
|
|
ABLT,
|
|
ABMI,
|
|
ABNE,
|
|
ABPL,
|
|
ABRA,
|
|
ABSET,
|
|
ABSR,
|
|
ABTST,
|
|
ABVC,
|
|
ABVS,
|
|
ACALLM,
|
|
ACAS2B,
|
|
ACAS2L,
|
|
ACAS2W,
|
|
ACASB,
|
|
ACASEW,
|
|
ACASL,
|
|
ACASW,
|
|
ACHK2B,
|
|
ACHK2L,
|
|
ACHK2W,
|
|
ACHKL,
|
|
ACHKW,
|
|
ACLRB,
|
|
ACLRL,
|
|
ACLRW,
|
|
ACMP2B,
|
|
ACMP2L,
|
|
ACMP2W,
|
|
ACMPB,
|
|
ACMPL,
|
|
ACMPW,
|
|
ADATA,
|
|
ADBCC,
|
|
ADBCS,
|
|
ADBEQ,
|
|
ADBF,
|
|
ADBGE,
|
|
ADBGT,
|
|
ADBHI,
|
|
ADBLE,
|
|
ADBLS,
|
|
ADBLT,
|
|
ADBMI,
|
|
ADBNE,
|
|
ADBPL,
|
|
ADBT,
|
|
ADBVC,
|
|
ADBVS,
|
|
ADIVSL,
|
|
ADIVSW,
|
|
ADIVUL,
|
|
ADIVUW,
|
|
AEND,
|
|
AEORB,
|
|
AEORL,
|
|
AEORW,
|
|
AEXG,
|
|
AEXTBL,
|
|
AEXTBW,
|
|
AEXTWL,
|
|
AFABSB,
|
|
AFABSD,
|
|
AFABSF,
|
|
AFABSL,
|
|
AFABSW,
|
|
AFACOSB,
|
|
AFACOSD,
|
|
AFACOSF,
|
|
AFACOSL,
|
|
AFACOSW,
|
|
AFADDB,
|
|
AFADDD,
|
|
AFADDF,
|
|
AFADDL,
|
|
AFADDW,
|
|
AFASINB,
|
|
AFASIND,
|
|
AFASINF,
|
|
AFASINL,
|
|
AFASINW,
|
|
AFATANB,
|
|
AFATAND,
|
|
AFATANF,
|
|
AFATANHB,
|
|
AFATANHD,
|
|
AFATANHF,
|
|
AFATANHL,
|
|
AFATANHW,
|
|
AFATANL,
|
|
AFATANW,
|
|
AFBEQ,
|
|
AFBF,
|
|
AFBGE,
|
|
AFBGT,
|
|
AFBLE,
|
|
AFBLT,
|
|
AFBNE,
|
|
AFBT,
|
|
AFCMPB,
|
|
AFCMPD,
|
|
AFCMPF,
|
|
AFCMPL,
|
|
AFCMPW,
|
|
AFCOSB,
|
|
AFCOSD,
|
|
AFCOSF,
|
|
AFCOSHB,
|
|
AFCOSHD,
|
|
AFCOSHF,
|
|
AFCOSHL,
|
|
AFCOSHW,
|
|
AFCOSL,
|
|
AFCOSW,
|
|
AFDBEQ,
|
|
AFDBF,
|
|
AFDBGE,
|
|
AFDBGT,
|
|
AFDBLE,
|
|
AFDBLT,
|
|
AFDBNE,
|
|
AFDBT,
|
|
AFDIVB,
|
|
AFDIVD,
|
|
AFDIVF,
|
|
AFDIVL,
|
|
AFDIVW,
|
|
AFETOXB,
|
|
AFETOXD,
|
|
AFETOXF,
|
|
AFETOXL,
|
|
AFETOXM1B,
|
|
AFETOXM1D,
|
|
AFETOXM1F,
|
|
AFETOXM1L,
|
|
AFETOXM1W,
|
|
AFETOXW,
|
|
AFGETEXPB,
|
|
AFGETEXPD,
|
|
AFGETEXPF,
|
|
AFGETEXPL,
|
|
AFGETEXPW,
|
|
AFGETMANB,
|
|
AFGETMAND,
|
|
AFGETMANF,
|
|
AFGETMANL,
|
|
AFGETMANW,
|
|
AFINTB,
|
|
AFINTD,
|
|
AFINTF,
|
|
AFINTL,
|
|
AFINTRZB,
|
|
AFINTRZD,
|
|
AFINTRZF,
|
|
AFINTRZL,
|
|
AFINTRZW,
|
|
AFINTW,
|
|
AFLOG10B,
|
|
AFLOG10D,
|
|
AFLOG10F,
|
|
AFLOG10L,
|
|
AFLOG10W,
|
|
AFLOG2B,
|
|
AFLOG2D,
|
|
AFLOG2F,
|
|
AFLOG2L,
|
|
AFLOG2W,
|
|
AFLOGNB,
|
|
AFLOGND,
|
|
AFLOGNF,
|
|
AFLOGNL,
|
|
AFLOGNP1B,
|
|
AFLOGNP1D,
|
|
AFLOGNP1F,
|
|
AFLOGNP1L,
|
|
AFLOGNP1W,
|
|
AFLOGNW,
|
|
AFMODB,
|
|
AFMODD,
|
|
AFMODF,
|
|
AFMODL,
|
|
AFMODW,
|
|
AFMOVEB,
|
|
AFMOVED,
|
|
AFMOVEF,
|
|
AFMOVEL,
|
|
AFMOVEM,
|
|
AFMOVEMC,
|
|
AFMOVEW,
|
|
AFMULB,
|
|
AFMULD,
|
|
AFMULF,
|
|
AFMULL,
|
|
AFMULW,
|
|
AFNEGB,
|
|
AFNEGD,
|
|
AFNEGF,
|
|
AFNEGL,
|
|
AFNEGW,
|
|
AFREMB,
|
|
AFREMD,
|
|
AFREMF,
|
|
AFREML,
|
|
AFREMW,
|
|
AFRESTORE,
|
|
AFSAVE,
|
|
AFSCALEB,
|
|
AFSCALED,
|
|
AFSCALEF,
|
|
AFSCALEL,
|
|
AFSCALEW,
|
|
AFSEQ,
|
|
AFSF,
|
|
AFSGE,
|
|
AFSGT,
|
|
AFSINB,
|
|
AFSIND,
|
|
AFSINF,
|
|
AFSINHB,
|
|
AFSINHD,
|
|
AFSINHF,
|
|
AFSINHL,
|
|
AFSINHW,
|
|
AFSINL,
|
|
AFSINW,
|
|
AFSLE,
|
|
AFSLT,
|
|
AFSNE,
|
|
AFSQRTB,
|
|
AFSQRTD,
|
|
AFSQRTF,
|
|
AFSQRTL,
|
|
AFSQRTW,
|
|
AFST,
|
|
AFSUBB,
|
|
AFSUBD,
|
|
AFSUBF,
|
|
AFSUBL,
|
|
AFSUBW,
|
|
AFTANB,
|
|
AFTAND,
|
|
AFTANF,
|
|
AFTANHB,
|
|
AFTANHD,
|
|
AFTANHF,
|
|
AFTANHL,
|
|
AFTANHW,
|
|
AFTANL,
|
|
AFTANW,
|
|
AFTENTOXB,
|
|
AFTENTOXD,
|
|
AFTENTOXF,
|
|
AFTENTOXL,
|
|
AFTENTOXW,
|
|
AFTSTB,
|
|
AFTSTD,
|
|
AFTSTF,
|
|
AFTSTL,
|
|
AFTSTW,
|
|
AFTWOTOXB,
|
|
AFTWOTOXD,
|
|
AFTWOTOXF,
|
|
AFTWOTOXL,
|
|
AFTWOTOXW,
|
|
AGLOBL,
|
|
AGOK,
|
|
AHISTORY,
|
|
AILLEG,
|
|
AINSTR,
|
|
AJMP,
|
|
AJSR,
|
|
ALEA,
|
|
ALINKL,
|
|
ALINKW,
|
|
ALOCATE,
|
|
ALONG,
|
|
ALSLB,
|
|
ALSLL,
|
|
ALSLW,
|
|
ALSRB,
|
|
ALSRL,
|
|
ALSRW,
|
|
AMOVB,
|
|
AMOVEM,
|
|
AMOVEPL,
|
|
AMOVEPW,
|
|
AMOVESB,
|
|
AMOVESL,
|
|
AMOVESW,
|
|
AMOVL,
|
|
AMOVW,
|
|
AMULSL,
|
|
AMULSW,
|
|
AMULUL,
|
|
AMULUW,
|
|
ANAME,
|
|
ANBCD,
|
|
ANEGB,
|
|
ANEGL,
|
|
ANEGW,
|
|
ANEGXB,
|
|
ANEGXL,
|
|
ANEGXW,
|
|
ANOP,
|
|
ANOTB,
|
|
ANOTL,
|
|
ANOTW,
|
|
AORB,
|
|
AORL,
|
|
AORW,
|
|
APACK,
|
|
APEA,
|
|
ARESET,
|
|
AROTLB,
|
|
AROTLL,
|
|
AROTLW,
|
|
AROTRB,
|
|
AROTRL,
|
|
AROTRW,
|
|
AROXLB,
|
|
AROXLL,
|
|
AROXLW,
|
|
AROXRB,
|
|
AROXRL,
|
|
AROXRW,
|
|
ARTD,
|
|
ARTE,
|
|
ARTM,
|
|
ARTR,
|
|
ARTS,
|
|
ASBCD,
|
|
ASCC,
|
|
ASCS,
|
|
ASEQ,
|
|
ASF,
|
|
ASGE,
|
|
ASGT,
|
|
ASHI,
|
|
ASLE,
|
|
ASLS,
|
|
ASLT,
|
|
ASMI,
|
|
ASNE,
|
|
ASPL,
|
|
AST,
|
|
ASTOP,
|
|
ASUBB,
|
|
ASUBL,
|
|
ASUBW,
|
|
ASUBXB,
|
|
ASUBXL,
|
|
ASUBXW,
|
|
ASVC,
|
|
ASVS,
|
|
ASWAP,
|
|
ASYS,
|
|
ATAS,
|
|
ATEXT,
|
|
ATRAP,
|
|
ATRAPCC,
|
|
ATRAPCS,
|
|
ATRAPEQ,
|
|
ATRAPF,
|
|
ATRAPGE,
|
|
ATRAPGT,
|
|
ATRAPHI,
|
|
ATRAPLE,
|
|
ATRAPLS,
|
|
ATRAPLT,
|
|
ATRAPMI,
|
|
ATRAPNE,
|
|
ATRAPPL,
|
|
ATRAPT,
|
|
ATRAPV,
|
|
ATRAPVC,
|
|
ATRAPVS,
|
|
ATSTB,
|
|
ATSTL,
|
|
ATSTW,
|
|
AUNLK,
|
|
AUNPK,
|
|
AWORD,
|
|
ASIGNAME,
|
|
|
|
ALAST
|
|
};
|
|
|
|
enum
|
|
{
|
|
NREG = 8,
|
|
|
|
D_R0 = 0,
|
|
D_A0 = NREG,
|
|
D_F0 = D_A0+NREG,
|
|
D_NONE = D_F0+NREG,
|
|
D_TOS,
|
|
D_BRANCH,
|
|
D_STACK,
|
|
D_TREE,
|
|
D_EXTERN,
|
|
D_STATIC,
|
|
D_AUTO,
|
|
D_PARAM,
|
|
D_CONST,
|
|
D_FCONST,
|
|
D_QUICK,
|
|
|
|
D_CCR,
|
|
D_SR,
|
|
D_SFC,
|
|
D_CACR,
|
|
D_USP,
|
|
D_VBR,
|
|
D_CAAR,
|
|
D_MSP,
|
|
D_ISP,
|
|
D_DFC,
|
|
D_FPCR,
|
|
D_FPSR,
|
|
D_FPIAR,
|
|
D_SCONST,
|
|
D_FILE,
|
|
|
|
D_TC, /* new for 68040 */
|
|
D_ITT0,
|
|
D_ITT1,
|
|
D_DTT0,
|
|
D_DTT1,
|
|
D_MMUSR,
|
|
D_URP,
|
|
D_SRP,
|
|
|
|
D_FILE1,
|
|
|
|
D_MASK = 63/(D_SRP>=63?0:1),
|
|
|
|
I_DIR = (D_MASK+1)*0,
|
|
I_INDINC = (D_MASK+1)*1,
|
|
I_INDDEC = (D_MASK+1)*2,
|
|
I_INDIR = (D_MASK+1)*3,
|
|
I_ADDR = (D_MASK+1)*4,
|
|
|
|
I_INDEX1 = (D_MASK+1)*1,
|
|
I_INDEX2 = (D_MASK+1)*2,
|
|
I_INDEX3 = (D_MASK+1)*3,
|
|
|
|
I_MASK = (D_MASK+1)*7,
|
|
|
|
T_FIELD = 1<<0,
|
|
T_INDEX = 1<<1,
|
|
T_TYPE = 1<<2,
|
|
T_OFFSET = 1<<3,
|
|
T_FCONST = 1<<4,
|
|
T_SYM = 1<<5,
|
|
T_SCONST = 1<<6
|
|
};
|
|
|
|
/*
|
|
* this is the ranlib header
|
|
*/
|
|
#define SYMDEF "__.SYMDEF"
|
|
|
|
/*
|
|
* this is the simulated IEEE floating point
|
|
*/
|
|
typedef struct ieee Ieee;
|
|
struct ieee
|
|
{
|
|
long l; /* contains ls-man 0xffffffff */
|
|
long h; /* contains sign 0x80000000
|
|
exp 0x7ff00000
|
|
ms-man 0x000fffff */
|
|
};
|