📄 cstr.s
字号:
.globl jget,iget.globl succ.globl create,rewind,putchar,getchar,allocate.globl smark.globl rewcstr,putcstr,getcstr,size/ currnet string manipulations/ keep a initial fragment handy for quick access/go to allocator for the restsmark: jsr pc,jget clr cstrw jmp succrewcstr: clr cstrr rts pcputcstr: mov cstrw,r1 inc cstrw cmp r1,$cstrt /is it quick access? bge 1f movb r0,cstrb(r1) /yes, stash the char rts pc1: bne 1f mov r0,-(sp) /first char to allocator mov symp,r1 bne 2f mov $64,r0 jsr pc,allocate mov r1,symp2: jsr pc,create mov (sp)+,r01: mov symp,r1 jsr pc,putchar rts pcgetcstr: mov cstrr,r1 cmp r1,cstrw blt 1f clr r0 /end of string rts pc1: inc cstrr cmp r1,$cstrt bge 1f movb cstrb(r1),r0 rts pc1: bne 1f mov symp,r1 jsr pc,rewind1: mov symp,r1 jsr pc,getchar rts pcsize: jsr pc,iget mov cstrw,(r0) jmp succcstrt = 16 /top of quick access current string.datasymp: 0 /pointer to dynamicallly allocated current stringcstrw: 0 /current string write pointer.bsscstrr: .=.+2 /read pointercstrb: .=.+cstrt /base of quick access fragment
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -