History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/appl/java/low.s (1 of 18352 files). Show all

Unified · Split

java/appl/java/low.s+140−0
@@ -0,0 +1,140 @@
1+#0
2+# SetByte
3+ addw 32(fp),36(fp),44(fp)
4+ movb 40(fp),0(44(fp))
5+ ret
6+#3
7+# SetInt
8+ addw 32(fp),36(fp),44(fp)
9+ movw 40(fp),0(44(fp))
10+ ret
11+#6
12+# SetBig
13+ addw 32(fp),36(fp),48(fp)
14+ movl 40(fp),0(48(fp))
15+ ret
16+#9
17+# SetReal
18+ addw 32(fp),36(fp),48(fp)
19+ movf 40(fp),0(48(fp))
20+ ret
21+#12
22+# SetObj
23+ addw 32(fp),36(fp),44(fp)
24+ movp 40(fp),0(44(fp))
25+ ret
26+#15
27+# GetByte
28+ addw 32(fp),36(fp),40(fp)
29+ movb 0(40(fp)),0(16(fp))
30+ ret
31+#18
32+# GetInt
33+ addw 32(fp),36(fp),40(fp)
34+ movw 0(40(fp)),0(16(fp))
35+ ret
36+#21
37+# GetBig
38+ addw 32(fp),36(fp),40(fp)
39+ movl 0(40(fp)),0(16(fp))
40+ ret
41+#24
42+# GetReal
43+ addw 32(fp),36(fp),40(fp)
44+ movf 0(40(fp)),0(16(fp))
45+ ret
46+#27
47+# GetObj
48+ addw 32(fp),36(fp),40(fp)
49+ movp 0(40(fp)),0(16(fp))
50+ ret
51+#30
52+#CallMethod: frame size==80 map==0x00b840
53+# params
54+# module ptr: 32(fp) ptr
55+# method idx: 36(fp)
56+# this ptr: 40(fp) ptr
57+# args: 44(fp) ptr
58+# ret-val: 48(fp) ptr
59+# local vars used:
60+# frame: 52(fp) not-marked
61+# frame-slot: 56(fp)
62+# loop index: 60(fp)
63+# tmp: 64(fp) -- used for array idexing & alignment ck
64+# pick-tmp: 68(fp) ptr
65+# array len: 72(fp)
66+#
67+ mframe 32(fp),36(fp),52(fp)
68+ addw 52(fp),$32,56(fp) #compute slot address for arg
69+ beqw 0(mp),40(fp),$35 #if static then 'this' is nil
70+ movp 40(fp),0(56(fp)) #move 'this' into frame
71+ addw $4,56(fp) #next slot
72+#35
73+ # move args into frame
74+ # for(idx:=0; idx <len args; idx++ )
75+ movw $0,60(fp) #initialize loop idx
76+ lena 44(fp),72(fp) #length of array
77+#37
78+ blew 72(fp),60(fp),$60 #loop condition
79+ indw 44(fp),64(fp),60(fp) #index the array
80+ movp 0(64(fp)),68(fp) #grab the array element; its a ref pick-adt
81+ case 0(68(fp)),4(mp) #switch off of the 'pick' id
82+#41
83+ movp 4(68(fp)),0(56(fp)) # object param
84+ jmp $57
85+#43
86+ movw 4(68(fp)),0(56(fp)) # word param (byte,short,char,boolean,int)
87+ jmp $57
88+#45
89+ andw 56(fp),$7,64(fp) # check for 8-byte alignment
90+ beqw 64(fp),$0,$48 # branch if already aligned
91+ addw $4,56(fp) # next slot is aligned
92+ movl 8(68(fp)),0(56(fp)) # big param (long)
93+ addw $8,56(fp) # next param slot
94+ jmp $58
95+#51
96+ andw 56(fp),$7,64(fp) # check for 8-byte alignment
97+ beqw 64(fp),$0,$54 # branch if already aligned
98+ addw $4,56(fp) # next slot is aligned
99+ movf 8(68(fp)),0(56(fp)) # real param (float,double)
100+ addw $8,56(fp) # next param slot
101+ jmp $58
102+#57
103+ addw $4,56(fp) # next slot
104+#58
105+ addw $1,60(fp) #inc loop index
106+ jmp $37 #end-for
107+#60
108+ # setup return value if one exists
109+ beqw 0(mp),48(fp),$65 #if nil then no functional return
110+ case 0(48(fp)),60(mp) #switch off pick field of ret-value
111+#62
112+ lea 4(48(fp)),16(52(fp)) #4-byte aligned return addr
113+ jmp $65
114+ lea 8(48(fp)),16(52(fp)) #8-byte aligned return addr
115+#65
116+ mcall 52(fp),36(fp),32(fp)
117+ ret
118+#
119+# change the following with care
120+#
121+ desc $0,92,"80"
122+ desc $1,48,"00a0"
123+ desc $2,40,"0080"
124+ desc $3,48,"0080"
125+ desc $4,80,"00b840"
126+ var @mp,92
127+ word @mp+4,4,0,1,41,1,6,43,6,7,45,7,9,51,66
128+ word @mp+60,2,0,6,62,6,9,64,66
129+ module Low
130+ link 3,0, 0x349a7796,"SetByte"
131+ link 3,3, 0x2de68727,"SetInt"
132+ link 3,6, 0xd7e9f417,"SetBig"
133+ link 3,9 ,0xa51f3c84,"SetReal"
134+ link 1,12,0x2ada273,"SetObj"
135+ link 2,15,0x65a049aa,"GetByte"
136+ link 2,18,0x7060ebba,"GetInt"
137+ link 2,21,0x9f04ed0,"GetBig"
138+ link 2,24,0x553990fb,"GetReal"
139+ link 2,27,0x30af57fd,"GetObj"
140+ link 4,30,0x2943aeae,"CallMethod"