Skip to content

Instantly share code, notes, and snippets.

@sam-falvo
Created September 8, 2015 05:33
Show Gist options
  • Save sam-falvo/d1a78c7d398cd22c6502 to your computer and use it in GitHub Desktop.
Save sam-falvo/d1a78c7d398cd22c6502 to your computer and use it in GitHub Desktop.
RISC-V Output for given subForth source code
align 8
dword $0E00000000000000
emit:
ld x16 , 0(dsp)
addi dsp, dsp, 8
LGP1 :
auipc gp, 0
ld x17 , (emit-LGP1 )-8 (gp)
sb x16 , 0(x17 )
jalr x0, 0(ra)
align 8
dword $000000000000000A
dword $000000000000000D
cr:
addi rsp, rsp, -8
sd ra, 0(rsp)
LGP2 :
auipc gp, 0
ld x16 , (cr-LGP2 )-8 (gp)
addi dsp, dsp, -8
sd x16 , 0(dsp)
jal ra, emit
LGP3 :
auipc gp, 0
ld x16 , (cr-LGP3 )-16 (gp)
addi dsp, dsp, -8
sd x16 , 0(dsp)
jal ra, emit
ld ra, 0(rsp)
addi rsp, rsp, 8
jalr x0, 0(ra)
align 8
dword $0000000000000020
space:
addi rsp, rsp, -8
sd ra, 0(rsp)
LGP4 :
auipc gp, 0
ld x16 , (space-LGP4 )-8 (gp)
addi dsp, dsp, -8
sd x16 , 0(dsp)
jal ra, emit
ld ra, 0(rsp)
addi rsp, rsp, 8
jalr x0, 0(ra)
align 8
dword $000000000000002E
dword $0000000000000020
ch:
addi rsp, rsp, -8
sd ra, 0(rsp)
ld x16 , 0 (dsp)
LGP5 :
auipc gp, 0
ld x17 , (ch-LGP5 )-8 (gp)
sub x16 , x16 , x17
bge x16 , x0, L0
ld x16 , 0(dsp)
addi dsp, dsp, 8
ld x17 , (ch-LGP5 )-16 (gp)
addi dsp, dsp, -8
sd x17 , 0(dsp)
L0 :
jal ra, emit
ld ra, 0(rsp)
addi rsp, rsp, 8
jalr x0, 0(ra)
align 8
dword $0000000000000001
c:
addi rsp, rsp, -8
sd ra, 0(rsp)
ld x16 , 0 (dsp)
addi dsp, dsp, -8
sd x16 , 0(dsp)
jal ra, ch
jal ra, space
ld x16 , 0 (dsp)
LGP6 :
auipc gp, 0
ld x17 , (c-LGP6 )-8 (gp)
add x16 , x16 , x17
sd x16 , 0 (dsp)
ld ra, 0(rsp)
addi rsp, rsp, 8
jalr x0, 0(ra)
align 8
r:
addi rsp, rsp, -8
sd ra, 0(rsp)
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, c
jal ra, cr
ld ra, 0(rsp)
addi rsp, rsp, 8
jalr x0, 0(ra)
align 8
dword $0000000000000000
boot:
addi rsp, rsp, -8
sd ra, 0(rsp)
LGP7 :
auipc gp, 0
ld x16 , (boot-LGP7 )-8 (gp)
addi dsp, dsp, -8
sd x16 , 0(dsp)
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
jal ra, r
L1 :
jal x0, L1
ld ra, 0(rsp)
addi rsp, rsp, 8
jalr x0, 0(ra)
\ Print ASCII characters in 16x16 matrix.
: emit d> d# $0E00000000000000 c! ;
: cr d# 13 >d emit d# 10 >d emit ;
: space d# 32 >d emit ;
: ch 0 d@ d# 32 - -if d> d# $2E >d then emit ;
: c 0 d@ >d ch space 0 d@ d# 1 + 0 d! ;
: r c c c c c c c c c c c c c c c c cr ;
: boot d# 0 >d r r r r r r r r r r r r r r r r begin again ;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment