A2osX/BIN/CC.S.DECL.txt

152 lines
2.5 KiB
Plaintext
Raw Normal View History

2022-01-30 21:47:08 +00:00
NEW
AUTO 3,1
*--------------------------------------
DECL.AUTO
DECL.REGISTER
DECL.STATIC
DECL.EXTERN
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
DECL.TYPEDEF jsr CORE.GetNCharNB
bcs .98
>LDYA L.CC.TYPEQUAL
jsr CC.LookupID
bcs .98
cpx #4 no const nor volatile
bcc .98
jsr TYPE.GetTQInYA
bcs .99
ldx #SYM.SC.TYPEDEF
sec Reset Buffer
jsr SYM.New Y,A=T/Q,storage class TYPEDEF
bcs .99
jsr CC.GetCharNB
bcs .98
cmp #';'
bne .98
jsr CORE.GetNCharNB skip ';'
jmp SYM.Store
.98 lda #E.CSYN
sec
.99
DECL.TYPEDEF.RTS
rts
*--------------------------------------
2022-08-20 14:37:37 +00:00
* X = type qual
*--------------------------------------
DECL.X jsr TYPE.GetTQInYA
bcs .99
cpy #SYM.T.SU
bne .7
2022-02-04 14:57:17 +00:00
tax save Q
jsr CC.GetCharNB
bcs .98
cmp #';' from a tag def
beq .8
jsr CC.IsLetter
bcs .98
* >DEBUG
.1 clc reuse buffer
ldy #SYM.T.SU
txa restore Q
jsr DECL.YAC
bcs .99
jsr CC.GetCharNB
bcs .98
cmp #','
bne .2
jsr CORE.GetNCharNBNL
bcc .1
bcs .98
.2 cmp #';' TODO: struct initalizers
bne .98
.8 clc
rts
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
.7 sec Reset Buffer
DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
2022-06-22 06:26:44 +00:00
bit bLocalScope
2022-08-20 14:37:37 +00:00
bpl .25
2022-02-04 14:57:17 +00:00
bit #SYM.Q.FUNC someone wants to add a local f() ?
bne .98
2022-02-04 14:57:17 +00:00
ldx #SYM.SC.AUTO
.25 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse
bcs .98 OOM or DUP
2022-08-20 14:37:37 +00:00
.22 jsr CC.GetCharNB
bcs .98
2022-02-04 14:57:17 +00:00
2022-08-20 14:37:37 +00:00
cmp #';'
beq .8
2022-02-04 14:57:17 +00:00
2022-08-20 14:37:37 +00:00
cmp #'{'
bne .26
jmp CORE.GetNCharNBNL Skip '{'
2022-08-20 14:37:37 +00:00
*--------------------------------------
* Initializer
*--------------------------------------
.26 cmp #'=' type var = value ?
bne .98
2022-02-04 14:57:17 +00:00
jsr CORE.GetNCharNB skip '='
bcs .98
2022-08-20 14:37:37 +00:00
jsr SYM.GetTypeInYA expected T/Q
jsr EXP.Eval
bcs .99
2022-02-04 14:57:17 +00:00
jsr SYM.GetAddr1
bcs .99
2022-08-20 14:37:37 +00:00
jsr SYM.GetTypeInYA Y,A = T/Q
jsr SYM.PopValue Set value to this var
.29 bcs .99
.28 jsr SYM.Store
bcs .99
2022-06-22 06:26:44 +00:00
2022-08-20 14:37:37 +00:00
jsr CC.GetCharNB
cmp #';'
bne .98
.8 clc
rts
2022-02-04 14:57:17 +00:00
2022-08-20 14:37:37 +00:00
.98 lda #E.CSYN
2022-02-04 14:57:17 +00:00
sec
2022-08-20 14:37:37 +00:00
.99 rts
2022-01-30 21:47:08 +00:00
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.decl
LOAD usr/src/bin/cc.s
ASM