Subversion Repositories Kolibri OS

Rev

Rev 9053 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9053 Rev 9063
1
SECTION .text
1
SECTION .text
2
 
2
 
3
global go.os.Sleep
3
global go.os.Sleep
4
global go.os.Event
4
global go.os.Event
5
global go.os.GetButtonID
5
global go.os.GetButtonID
6
global go.os.CreateButton
6
global go.os.CreateButton
7
global go.os.Exit
7
global go.os.Exit
8
global go.os.Redraw
8
global go.os.Redraw
9
global go.os.Window
9
global go.os.Window
10
global go.os.WriteText
10
global go.os.WriteText
11
global go.os.GetTime
11
global go.os.GetTime
12
global go.os.DrawLine
12
global go.os.DrawLine
13
global go.os.DrawBar
13
global go.os.DrawBar
14
global go.os.DebugOutHex
14
global go.os.DebugOutHex
15
global go.os.DebugOutChar
15
global go.os.DebugOutChar
16
global go.os.DebugOutStr
16
global go.os.DebugOutStr
17
global go.os.WriteText2
17
global go.os.WriteText2
18
 
18
 
-
 
19
global runtime.memequal32..f
-
 
20
runtime.memequal32..f:
-
 
21
    ret
-
 
22
 
-
 
23
global runtime.memequal8..f
-
 
24
runtime.memequal8..f:
-
 
25
    ret
-
 
26
 
-
 
27
global runtime.memequal
-
 
28
runtime.memequal:
-
 
29
    ret
-
 
30
 
-
 
31
global go.os.SetByteString
-
 
32
go.os.SetByteString:
-
 
33
  push ebp
-
 
34
  mov ebp, esp
-
 
35
  mov eax, [ebp+8]
-
 
36
  mov ebx, [ebp+12]
-
 
37
  mov ecx, [ebp+16]
-
 
38
  mov dh, [ebp+20]
-
 
39
  mov byte[eax+ecx], dh
-
 
40
  mov esp, ebp
-
 
41
  pop ebp
-
 
42
  ret
-
 
43
 
-
 
44
global __go_runtime_error
-
 
45
global __go_register_gc_roots
-
 
46
global __unsafe_get_addr
-
 
47
 
-
 
48
__unsafe_get_addr:
-
 
49
  push ebp
-
 
50
  mov ebp, esp
-
 
51
  mov eax, [ebp+8]
-
 
52
  mov esp, ebp
-
 
53
  pop ebp
-
 
54
  ret
-
 
55
 
-
 
56
__go_register_gc_roots:
-
 
57
__go_runtime_error:
-
 
58
  ret
-
 
59
 
-
 
60
global runtime.writeBarrier
-
 
61
global runtime.gcWriteBarrier
-
 
62
runtime.writeBarrier:
-
 
63
    mov eax, [esp+8]
-
 
64
    mov ebx, [esp+12]
-
 
65
    mov dword[eax], ebx
-
 
66
    ret
-
 
67
 
-
 
68
global runtime.strequal..f
-
 
69
runtime.strequal..f:
-
 
70
    mov eax,[esp+8]
-
 
71
    mov ebx,[esp+16]
-
 
72
    mov ecx,0
-
 
73
    strcmp_loop:
-
 
74
        mov byte dl,[eax+ecx]
-
 
75
        mov byte dh,[ebx+ecx]
-
 
76
        inc ecx
-
 
77
        cmp dl,0
-
 
78
        je strcmp_end_0
-
 
79
        cmp byte dl,dh
-
 
80
        je strcmp_loop
-
 
81
        jl strcmp_end_1
-
 
82
        jg strcmp_end_2
-
 
83
    strcmp_end_0:
-
 
84
        cmp dh,0
-
 
85
        jne strcmp_end_1
-
 
86
        xor ecx,ecx
-
 
87
        ret
-
 
88
    strcmp_end_1:
-
 
89
        mov ecx,1
-
 
90
        ret
-
 
91
    strcmp_end_2:
-
 
92
        mov ecx,-1
-
 
93
        ret
-
 
94
 
-
 
95
runtime.gcWriteBarrier:
-
 
96
    mov eax, [esp+8]
-
 
97
    mov ebx, [esp+12]
-
 
98
    mov dword[eax], ebx
-
 
99
    ret
-
 
100
 
-
 
101
global runtime.goPanicIndex
-
 
102
runtime.goPanicIndex:
-
 
103
    ret
-
 
104
 
-
 
105
global runtime.registerGCRoots
-
 
106
runtime.registerGCRoots:
-
 
107
    ret
-
 
108
 
-
 
109
global memcmp
-
 
110
memcmp:
-
 
111
    push ebp
-
 
112
    mov ebp,esp
-
 
113
    mov     esi, [ebp+8]    ; Move first pointer to esi
-
 
114
    mov     edi, [ebp+12]    ; Move second pointer to edi
-
 
115
    mov     ecx, [ebp+16]    ; Move length to ecx
-
 
116
 
-
 
117
    cld                         ; Clear DF, the direction flag, so comparisons happen
-
 
118
                                ; at increasing addresses
-
 
119
    cmp     ecx, ecx            ; Special case: If length parameter to memcmp is
-
 
120
                                ; zero, don't compare any bytes.
-
 
121
    repe cmpsb                  ; Compare bytes at DS:ESI and ES:EDI, setting flags
-
 
122
                                ; Repeat this while equal ZF is set
-
 
123
    setz    al
-
 
124
    mov esp,ebp
-
 
125
    pop ebp
-
 
126
    ret
-
 
127
 
-
 
128
 
19
go.os.Sleep:
129
go.os.Sleep:
20
    push ebp
130
    push ebp
21
    mov ebp,esp
131
    mov ebp,esp
22
	mov eax, 5
132
	mov eax, 5
23
	mov ebx, [ebp+8]
133
	mov ebx, [ebp+8]
24
	int 0x40
134
	int 0x40
25
    mov esp,ebp
135
    mov esp,ebp
26
    pop ebp
136
    pop ebp
27
    ret
137
    ret
28
 
138
 
29
 
139
 
30
go.os.Event:
140
go.os.Event:
31
	mov eax, 10
141
	mov eax, 10
32
	int 0x40
142
	int 0x40
33
	ret
143
	ret
34
 
144
 
35
go.os.GetButtonID:
145
go.os.GetButtonID:
36
  mov   eax,17
146
  mov   eax,17
37
  int   0x40
147
  int   0x40
38
  test  al,al
148
  test  al,al
39
  jnz   .no_button
149
  jnz   .no_button
40
  shr   eax,8
150
  shr   eax,8
41
  ret
151
  ret
42
.no_button:
152
.no_button:
43
  xor   eax,eax
153
  xor   eax,eax
44
  dec   eax
154
  dec   eax
45
  ret
155
  ret
46
 
156
 
47
go.os.Exit:
157
go.os.Exit:
48
	mov eax, -1
158
	mov eax, -1
49
	int 0x40
159
	int 0x40
50
    ret
160
    ret
51
 
161
 
52
go.os.Redraw:
162
go.os.Redraw:
53
    push ebp
163
    push ebp
54
    mov ebp,esp
164
    mov ebp,esp
55
	mov eax, 12
165
	mov eax, 12
56
	mov ebx, [ebp+8]
166
	mov ebx, [ebp+8]
57
	int 0x40
167
	int 0x40
58
    mov esp,ebp
168
    mov esp,ebp
59
    pop ebp
169
    pop ebp
60
    ret
170
    ret
61
 
171
 
62
go.os.Window:
172
go.os.Window:
63
    push ebp
173
    push ebp
64
    mov ebp,esp
174
    mov ebp,esp
65
	mov ebx, [ebp+8]
175
	mov ebx, [ebp+8]
66
	shl ebx, 16
176
	shl ebx, 16
67
	or ebx, [ebp+16]
177
	or ebx, [ebp+16]
68
	mov ecx, [ebp+12]
178
	mov ecx, [ebp+12]
69
	shl ecx, 16
179
	shl ecx, 16
70
	or ecx, [ebp+20]
180
	or ecx, [ebp+20]
71
	mov edx, 0x14
181
	mov edx, 0x14
72
	shl edx, 24
182
	shl edx, 24
73
	or edx, 0xFFFFFF
183
	or edx, 0xFFFFFF
74
	mov esi, 0x808899ff
184
	mov esi, 0x808899ff
75
	mov edi, [ebp+24]
185
	mov edi, [ebp+24]
76
	xor eax, eax
186
	xor eax, eax
77
	int 0x40
187
	int 0x40
78
    mov esp,ebp
188
    mov esp,ebp
79
    pop ebp
189
    pop ebp
80
    ret
190
    ret
81
 
191
 
82
go.os.WriteText:
192
go.os.WriteText:
83
    push ebp
193
    push ebp
84
    mov ebp,esp
194
    mov ebp,esp
85
    mov eax,4
195
    mov eax,4
86
    mov ebx,[ebp+8]
196
    mov ebx,[ebp+8]
87
    shl ebx,16
197
    shl ebx,16
88
    mov bx,[ebp+12]
198
    mov bx,[ebp+12]
89
    mov ecx,[ebp+16]
199
    mov ecx,[ebp+16]
90
    mov edx,[ebp+20]
200
    mov edx,[ebp+20]
91
    mov esi,[ebp+24]
201
    mov esi,[ebp+24]
92
    int 0x40
202
    int 0x40
93
    mov esp,ebp
203
    mov esp,ebp
94
    pop ebp
204
    pop ebp
95
    ret
205
    ret
96
 
206
 
97
go.os.WriteText2:
207
go.os.WriteText2:
98
    push ebp
208
    push ebp
99
    mov ebp,esp
209
    mov ebp,esp
100
    mov eax,47
210
    mov eax,47
101
    mov ebx,[ebp+8]
211
    mov ebx,[ebp+8]
102
    shl ebx,16
212
    shl ebx,16
103
    mov ecx,[ebp+12]
213
    mov ecx,[ebp+12]
104
    mov edx,[ebp+20]
214
    mov edx,[ebp+20]
105
    shl edx,16
215
    shl edx,16
106
    add edx, [ebp+24]
216
    add edx, [ebp+24]
107
    mov esi,[ebp+28]
217
    mov esi,[ebp+28]
108
    int 0x40
218
    int 0x40
109
    mov esp,ebp
219
    mov esp,ebp
110
    pop ebp
220
    pop ebp
111
    ret
221
    ret
112
 
222
 
113
go.os.DrawLine:
223
go.os.DrawLine:
114
    push ebp
224
    push ebp
115
    mov ebp,esp
225
    mov ebp,esp
116
    mov ebx,[ebp+8]
226
    mov ebx,[ebp+8]
117
    shl ebx,16
227
    shl ebx,16
118
    mov bx,[ebp+16]
228
    mov bx,[ebp+16]
119
    mov ecx,[ebp+12]
229
    mov ecx,[ebp+12]
120
    shl ecx,16
230
    shl ecx,16
121
    mov cx,[ebp+20]
231
    mov cx,[ebp+20]
122
    mov edx,[ebp+24]
232
    mov edx,[ebp+24]
123
    mov eax,38
233
    mov eax,38
124
    int 0x40
234
    int 0x40
125
    mov esp,ebp
235
    mov esp,ebp
126
    pop ebp
236
    pop ebp
127
    ret
237
    ret
128
 
238
 
129
go.os.DrawBar:
239
go.os.DrawBar:
130
    push ebp
240
    push ebp
131
    mov ebp,esp
241
    mov ebp,esp
132
    mov   eax,13
242
    mov   eax,13
133
    mov   ebx,[ebp+8]
243
    mov   ebx,[ebp+8]
134
    shl   ebx,16
244
    shl   ebx,16
135
    mov   bx,[ebp+16]
245
    mov   bx,[ebp+16]
136
    mov   ecx,[ebp+12]
246
    mov   ecx,[ebp+12]
137
    shl   ecx,16
247
    shl   ecx,16
138
    mov   cx,[ebp+20]
248
    mov   cx,[ebp+20]
139
    mov   edx,[ebp+24]
249
    mov   edx,[ebp+24]
140
    int   0x40
250
    int   0x40
141
    mov esp,ebp
251
    mov esp,ebp
142
    pop ebp
252
    pop ebp
143
    ret
253
    ret
144
 
254
 
145
go.os.GetTime:
255
go.os.GetTime:
146
    mov eax, 3
256
    mov eax, 3
147
    int 0x40
257
    int 0x40
148
    ret
258
    ret
149
 
259
 
150
go.os.DebugOutHex:
260
go.os.DebugOutHex:
151
    mov eax, [esp+4]
261
    mov eax, [esp+4]
152
    mov   edx, 8
262
    mov   edx, 8
153
    .new_char:
263
    .new_char:
154
    rol   eax, 4
264
    rol   eax, 4
155
    movzx ecx, al
265
    movzx ecx, al
156
    and   cl,  0x0f
266
    and   cl,  0x0f
157
    mov   cl,  [__hexdigits + ecx]
267
    mov   cl,  [__hexdigits + ecx]
158
    pushad
268
    pushad
159
    mov eax, 63
269
    mov eax, 63
160
    mov ebx, 1
270
    mov ebx, 1
161
    int 0x40
271
    int 0x40
162
    popad
272
    popad
163
    dec   edx
273
    dec   edx
164
    jnz   .new_char
274
    jnz   .new_char
165
    ret
275
    ret
166
 
276
 
167
go.os.DebugOutChar:
277
go.os.DebugOutChar:
168
   mov al, [esp+4]
278
   mov al, [esp+4]
169
   pushf
279
   pushf
170
   pushad
280
   pushad
171
   mov  cl,al
281
   mov  cl,al
172
   mov  eax,63
282
   mov  eax,63
173
   mov  ebx,1
283
   mov  ebx,1
174
   int  0x40
284
   int  0x40
175
   popad
285
   popad
176
   popf
286
   popf
177
   ret
287
   ret
178
 
288
 
179
go.os.DebugOutStr:
289
go.os.DebugOutStr:
180
   mov  edx,[esp+4]
290
   mov  edx,[esp+4]
181
   mov  eax,63
291
   mov  eax,63
182
   mov  ebx,1
292
   mov  ebx,1
183
 m2:
293
 m2:
184
   mov  cl, [edx]
294
   mov  cl, [edx]
185
   test cl,cl
295
   test cl,cl
186
   jz   m1
296
   jz   m1
187
   int  40h
297
   int  40h
188
   inc  edx
298
   inc  edx
189
   jmp  m2
299
   jmp  m2
190
 m1:
300
 m1:
191
   ret
301
   ret
192
 
302
 
193
go.os.CreateButton:
303
go.os.CreateButton:
194
  push  ebp
304
  push  ebp
195
  mov   ebp,esp
305
  mov   ebp,esp
196
  mov   eax, 8
306
  mov   eax, 8
197
  mov ebx, [ebp+8]
307
  mov ebx, [ebp+8]
198
  shl ebx, 16
308
  shl ebx, 16
199
  mov bx, [ebp+16]
309
  mov bx, [ebp+16]
200
  mov ecx, [ebp+12]
310
  mov ecx, [ebp+12]
201
  shl ecx, 16
311
  shl ecx, 16
202
  mov cx, [ebp+20]
312
  mov cx, [ebp+20]
203
  mov edx, [ebp+24]
313
  mov edx, [ebp+24]
204
  mov esi, [ebp+28]
314
  mov esi, [ebp+28]
205
  int   0x40
315
  int   0x40
206
  mov   esp,ebp
316
  mov   esp,ebp
207
  pop   ebp
317
  pop   ebp
208
  ret
318
  ret
209
 
319
 
210
SECTION .data
320
SECTION .data
211
__hexdigits:
321
__hexdigits:
212
  db '0123456789ABCDEF'
322
  db '0123456789ABCDEF'
213
323
 
-
 
324
__test:
-
 
325
    dd __hexdigits
-
 
326
    dd 15
-
 
327
214
328