mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-03-18 20:30:32 +00:00
BREQ and BRNE ops
This commit is contained in:
parent
934b04ae56
commit
3d84a2192c
@ -867,6 +867,16 @@ void emit_caseblock(int casecnt, int *caseof, int *casetag)
|
||||
printf("\t%s\t_B%03d-*\n", DW, casetag[i]);
|
||||
}
|
||||
}
|
||||
void emit_breq(int tag)
|
||||
{
|
||||
printf("\t%s\t$22\t\t\t; BREQ\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brne(int tag)
|
||||
{
|
||||
printf("\t%s\t$24\t\t\t; BRNE\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brfls(int tag)
|
||||
{
|
||||
printf("\t%s\t$4C\t\t\t; BRFLS\t_B%03d\n", DB, tag);
|
||||
@ -1606,6 +1616,36 @@ int crunch_seq(t_opseq **seq, int pass)
|
||||
break;
|
||||
}
|
||||
break; // LOGIC_NOT_CODE
|
||||
case EQ_CODE:
|
||||
switch (opnext->code)
|
||||
{
|
||||
case BRFALSE_CODE:
|
||||
op->code = BRNE_CODE;
|
||||
op->tag = opnext->tag;
|
||||
freeops = 1;
|
||||
break;
|
||||
case BRTRUE_CODE:
|
||||
op->code = BREQ_CODE;
|
||||
op->tag = opnext->tag;
|
||||
freeops = 1;
|
||||
break;
|
||||
}
|
||||
break; // EQ_CODE
|
||||
case NE_CODE:
|
||||
switch (opnext->code)
|
||||
{
|
||||
case BRFALSE_CODE:
|
||||
op->code = BREQ_CODE;
|
||||
op->tag = opnext->tag;
|
||||
freeops = 1;
|
||||
break;
|
||||
case BRTRUE_CODE:
|
||||
op->code = BRNE_CODE;
|
||||
op->tag = opnext->tag;
|
||||
freeops = 1;
|
||||
break;
|
||||
}
|
||||
break; // NE_CODE
|
||||
case SLB_CODE:
|
||||
if ((opnext->code == LLB_CODE) && (op->offsz == opnext->offsz))
|
||||
{
|
||||
@ -1924,6 +1964,12 @@ int emit_pending_seq()
|
||||
case BROR_CODE:
|
||||
emit_bror(op->tag);
|
||||
break;
|
||||
case BREQ_CODE:
|
||||
emit_breq(op->tag);
|
||||
break;
|
||||
case BRNE_CODE:
|
||||
emit_brne(op->tag);
|
||||
break;
|
||||
case BRFALSE_CODE:
|
||||
emit_brfls(op->tag);
|
||||
break;
|
||||
|
@ -64,10 +64,12 @@ typedef struct _opseq {
|
||||
#define BRNCH_CODE 0x0320
|
||||
#define BRFALSE_CODE 0x0321
|
||||
#define BRTRUE_CODE 0x0322
|
||||
#define BRAND_CODE 0x323
|
||||
#define BROR_CODE 0x324
|
||||
#define CODETAG_CODE 0x0325
|
||||
#define NOP_CODE 0x0326
|
||||
#define BREQ_CODE 0x0323
|
||||
#define BRNE_CODE 0x0324
|
||||
#define BRAND_CODE 0x325
|
||||
#define BROR_CODE 0x326
|
||||
#define CODETAG_CODE 0x0327
|
||||
#define NOP_CODE 0x0328
|
||||
#define ADDLB_CODE 0x0330
|
||||
#define ADDLW_CODE 0x0331
|
||||
#define ADDAB_CODE 0x0332
|
||||
|
@ -111,7 +111,7 @@ COMP LDA #$FF
|
||||
!ALIGN 255,0
|
||||
OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
|
||||
!WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
|
||||
!WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||
!WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E
|
||||
@ -853,6 +853,24 @@ BROR LDA ESTKL,X
|
||||
BNE BRNCH
|
||||
INX ; DROP LEFT HALF OF OR
|
||||
BNE NOBRNCH
|
||||
BREQ INX
|
||||
INX
|
||||
LDA ESTKL-2,X
|
||||
CMP ESTKL-1,X
|
||||
BNE NOBRNCH
|
||||
LDA ESTKH-2,X
|
||||
CMP ESTKH-1,X
|
||||
BEQ BRNCH
|
||||
BNE NOBRNCH
|
||||
BRNE INX
|
||||
INX
|
||||
LDA ESTKL-2,X
|
||||
CMP ESTKL-1,X
|
||||
BNE BRNCH
|
||||
LDA ESTKH-2,X
|
||||
CMP ESTKH-1,X
|
||||
BNE BRNCH
|
||||
BEQ NOBRNCH
|
||||
BRTRU INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
|
@ -195,7 +195,7 @@ VMCORE = *
|
||||
!ALIGN 255,0
|
||||
OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
|
||||
!WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
|
||||
!WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||
!WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E
|
||||
@ -396,7 +396,7 @@ LCDEFCMD = *-28 ; DEFCMD IN LC MEMORY
|
||||
!ALIGN 255,0
|
||||
OPXTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
|
||||
!WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
|
||||
!WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CSX ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CSX ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||
!WORD BRNCH,SEL,CALLX,ICALX,ENTER,LEAVEX,RETX,CFFB ; 50 52 54 56 58 5A 5C 5E
|
||||
@ -1645,6 +1645,24 @@ BROR LDA ESTKL,X
|
||||
BNE BRNCH
|
||||
INX ; DROP LEFT HALF OF OR
|
||||
BNE NOBRNCH
|
||||
BREQ INX
|
||||
INX
|
||||
LDA ESTKL-2,X
|
||||
CMP ESTKL-1,X
|
||||
BNE NOBRNCH
|
||||
LDA ESTKH-2,X
|
||||
CMP ESTKH-1,X
|
||||
BEQ BRNCH
|
||||
BNE NOBRNCH
|
||||
BRNE INX
|
||||
INX
|
||||
LDA ESTKL-2,X
|
||||
CMP ESTKL-1,X
|
||||
BNE BRNCH
|
||||
LDA ESTKH-2,X
|
||||
CMP ESTKH-1,X
|
||||
BNE BRNCH
|
||||
BEQ NOBRNCH
|
||||
BRTRU INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
|
@ -140,7 +140,7 @@ VMCORE = *
|
||||
!ALIGN 255,0
|
||||
OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
|
||||
!WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
|
||||
!WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||
!WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E
|
||||
@ -1021,9 +1021,24 @@ BROR LDA ESTKL,X
|
||||
BNE BRNCH
|
||||
INX ; DROP LEFT HALF OF OR
|
||||
BNE NOBRNCH
|
||||
;*
|
||||
;* BRANCHES
|
||||
;*
|
||||
BREQ INX
|
||||
INX
|
||||
LDA ESTKL-2,X
|
||||
CMP ESTKL-1,X
|
||||
BNE NOBRNCH
|
||||
LDA ESTKH-2,X
|
||||
CMP ESTKH-1,X
|
||||
BEQ BRNCH
|
||||
BNE NOBRNCH
|
||||
BRNE INX
|
||||
INX
|
||||
LDA ESTKL-2,X
|
||||
CMP ESTKL-1,X
|
||||
BNE BRNCH
|
||||
LDA ESTKH-2,X
|
||||
CMP ESTKH-1,X
|
||||
BNE BRNCH
|
||||
BEQ NOBRNCH
|
||||
BRTRU INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
|
@ -233,7 +233,7 @@ VMCORE = *
|
||||
!ALIGN 255,0
|
||||
OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
|
||||
!WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
|
||||
!WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||
!WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E
|
||||
@ -466,7 +466,7 @@ LCDEFCMD = *-28 ; DEFCMD IN LC MEMORY
|
||||
!ALIGN 255,0
|
||||
OPXTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
|
||||
!WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
|
||||
!WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CSX ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CSX ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||
!WORD BRNCH,SEL,CALLX,ICALX,ENTER,LEAVEX,RETX,CFFB ; 50 52 54 56 58 5A 5C 5E
|
||||
@ -1408,6 +1408,18 @@ BROR LDA TOS,S
|
||||
BNE BRNCH
|
||||
PLA ; DROP LEFT HALF OF OR
|
||||
BRA NOBRNCH
|
||||
BREQ PLA
|
||||
CMP TOS,S
|
||||
BNE +
|
||||
PLA
|
||||
BRA BRNCH
|
||||
BRNE PLA
|
||||
CMP TOS,S
|
||||
BEQ +
|
||||
PLA
|
||||
BRA BRNCH
|
||||
+ PLA
|
||||
BRA NOBRNCH
|
||||
BRTRU PLA
|
||||
BNE BRNCH
|
||||
NOBRNCH INY ;+INC_IP
|
||||
|
@ -111,7 +111,7 @@ COMP LDA #$FF
|
||||
!ALIGN 255,0
|
||||
OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
|
||||
!WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
|
||||
!WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||
!WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E
|
||||
@ -889,6 +889,24 @@ BROR LDA ESTKL,X
|
||||
BNE BRNCH
|
||||
INX ; DROP LEFT HALF OF OR
|
||||
BNE NOBRNCH
|
||||
BREQ INX
|
||||
INX
|
||||
LDA ESTKL-2,X
|
||||
CMP ESTKL-1,X
|
||||
BNE NOBRNCH
|
||||
LDA ESTKH-2,X
|
||||
CMP ESTKH-1,X
|
||||
BEQ BRNCH
|
||||
BNE NOBRNCH
|
||||
BRNE INX
|
||||
INX
|
||||
LDA ESTKL-2,X
|
||||
CMP ESTKL-1,X
|
||||
BNE BRNCH
|
||||
LDA ESTKH-2,X
|
||||
CMP ESTKH-1,X
|
||||
BNE BRNCH
|
||||
BEQ NOBRNCH
|
||||
BRTRU INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
|
Loading…
x
Reference in New Issue
Block a user