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"