1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
.extern fb_width
.extern fb_height
.extern fb_stride
.extern fb_bpp
.extern _gfx_bgcol
.extern framebuffer
.global gfx_clear_packed
gfx_clear_packed:
movl framebuffer, %eax
movzwl fb_stride, %ecx
movzwl fb_height, %edx
imull %ecx, %edx
addl %eax, %edx
pushl %ebx
movzwl fb_bpp, %ebx
movl _gfx_bgcol, %ecx
.L1:
movl %ecx, (%eax)
addl %ebx, %eax
cmpl %eax, %edx
ja .L1
.L2:
popl %ebx
ret
.global gfx_hline
gfx_hline:
pushl %ebx
movl 8(%esp), %eax
movl 12(%esp), %ecx
cmpl %eax, %ecx
jge .L3
xchgl %eax, %ecx
.L3:
movzwl fb_stride, %edx
movzbl fb_bpp, %ebx
imull 16(%esp), %edx
addl framebuffer, %edx
imull %ebx, %ecx
imull %ebx, %eax
addl %edx, %eax
addl %ecx, %edx
movl _gfx_fgcol, %ecx
cmpl %edx, %eax
jnb .L5
.L4:
movl %ecx, (%eax)
addl %ebx, %eax
cmpl %eax, %edx
ja .L4
.L5:
popl %ebx
ret
.global gfx_vline
gfx_vline:
pushl %esi
pushl %ebx
movl 12(%esp), %eax
movl 16(%esp), %edx
cmpl %eax, %edx
jge .L6
xchgl %eax, %edx
.L6:
movzwl fb_stride, %ebx
movzbl fb_bpp, %ecx
imull 20(%esp), %ecx
movl framebuffer, %esi
imull %ebx, %edx
imull %ebx, %eax
addl %ecx, %eax
addl %edx, %ecx
leal (%esi,%ecx), %edx
addl %esi, %eax
movl _gfx_fgcol, %ecx
cmpl %edx, %eax
jnb .L8
.L7:
movl %ecx, (%eax)
addl %ebx, %eax
cmpl %eax, %edx
ja .L7
.L8:
popl %ebx
popl %esi
ret
|