Table of Contents

1. MAKE RISCV STC FORTH SMALL

1.1. REGISTER

FORTH REG NAME RISCV REG NAME REASON
TOS X15 IT CAN OPTIMIZE BY RISCV COMPRESSED INSTRUCTION
RSP X8 SAME WITH TOS
PSP X9 SAME WITH TOS
TMPX X10, X11, X12, X13, X14 SAME WITH TOS

1.2. PPUSH

.MACRO PPUSH reg
        addi x9, x9, -4
        sw \reg, 0(x9)
.ENDM
PPUSH x15
PPUSH x1

DISASM:

426:   14f1                    addi    s1,s1,-4
428:   c09c                    sw      a5,0(s1)
42a:   14f1                    addi    s1,s1,-4
42c:   0014a023                sw      ra,0(s1)

1.3. PPOP

.MACRO PPOP reg
        lw \reg, 0(x9)
        addi x9, x9, 4
.ENDM
PPOP x1
PPOP x15

DISASM:

430:   0004a083                lw      ra,0(s1)
434:   0491                    addi    s1,s1,4
436:   409c                    lw      a5,0(s1)
438:   0491                    addi    s1,s1,4

1.4. RPUSH RPOP

.MACRO RPUSH reg
        addi x8, x8, -4
        sw \reg, 0(x8)
.ENDM

.MACRO RPOP reg
        lw \reg, 0(x8)
        addi x8, x8, 4
.ENDM

1.5. LIT

.MACRO LIT val
        PPUSH x15
        li x15, \val
.ENDM
LIT 0x55AA

DISASM:

43a:   14f1                    addi    s1,s1,-4
43c:   c09c                    sw      a5,0(s1)
43e:   6795                    lui     a5,0x5
440:   5aa78793                addi    a5,a5,1450 # 55aa

1.6. ZBRANCH

  .MACRO ZBRANCH sym
          mv x14, x15
          PPOP x15
          beqz x14, \sym
  .ENDM
  ZBRANCH 1f
  nop
1:

DISASM:

444:   873e                    mv      a4,a5
446:   409c                    lw      a5,0(s1)
448:   0491                    addi    s1,s1,4
44a:   c311                    beqz    a4,44e <main+0x4a>
44c:   0001                    nop

Created: 2026-03-14 Sat 20:52

Validate