📄 glib.txt
字号:
00070c e1a00007 MOV r0,r7
000710 e0871fa7 ADD r1,r7,r7,LSR #31
000714 e04840c1 SUB r4,r8,r1,ASR #1
;;;233 while(y1>=y2)
000718 e1a00000 NOP
|L1.1820|
00071c e156000b CMP r6,r11
000720 ba000060 BLT |L1.2216|
;;;234 {
;;;235 PutPixel(x1,y1,color);
000724 e1a02009 MOV r2,r9
000728 e1a01006 MOV r1,r6
00072c e1a00005 MOV r0,r5
000730 e59f318c LDR r3,|L1.2244|
000734 e5933000 LDR r3,[r3,#0] ; PutPixel
000738 e12fff33 BLX r3
;;;236 if(e>0){x1+=1;e-=dy;}
00073c e3540000 CMP r4,#0
000740 da000001 BLE |L1.1868|
000744 e2855001 ADD r5,r5,#1
000748 e0444007 SUB r4,r4,r7
;;;237 y1-=1;
|L1.1868|
00074c e2466001 SUB r6,r6,#1
;;;238 e+=dx;
000750 e0844008 ADD r4,r4,r8
;;;239 }
000754 eafffff0 B |L1.1820|
;;;240 }
;;;241 }
;;;242 }
;;;243 else //dx<0
;;;244 {
;;;245 dx=-dx; //dx=abs(dx)
|L1.1880|
000758 e2688000 RSB r8,r8,#0
;;;246 if(dy >= 0) // dy>=0
00075c e3570000 CMP r7,#0
000760 ba000027 BLT |L1.2052|
;;;247 {
;;;248 if(dx>=dy) // 4/8 octant
000764 e1580007 CMP r8,r7
000768 ba000012 BLT |L1.1976|
;;;249 {
;;;250 e=dy-dx/2;
00076c e1a00008 MOV r0,r8
000770 e0881fa8 ADD r1,r8,r8,LSR #31
000774 e04740c1 SUB r4,r7,r1,ASR #1
;;;251 while(x1>=x2)
000778 e1a00000 NOP
|L1.1916|
00077c e155000a CMP r5,r10
000780 ba000048 BLT |L1.2216|
;;;252 {
;;;253 PutPixel(x1,y1,color);
000784 e1a02009 MOV r2,r9
000788 e1a01006 MOV r1,r6
00078c e1a00005 MOV r0,r5
000790 e59f312c LDR r3,|L1.2244|
000794 e5933000 LDR r3,[r3,#0] ; PutPixel
000798 e12fff33 BLX r3
;;;254 if(e>0){y1+=1;e-=dx;}
00079c e3540000 CMP r4,#0
0007a0 da000001 BLE |L1.1964|
0007a4 e2866001 ADD r6,r6,#1
0007a8 e0444008 SUB r4,r4,r8
;;;255 x1-=1;
|L1.1964|
0007ac e2455001 SUB r5,r5,#1
;;;256 e+=dy;
0007b0 e0844007 ADD r4,r4,r7
;;;257 }
0007b4 eafffff0 B |L1.1916|
;;;258 }
;;;259 else // 3/8 octant
;;;260 {
;;;261 e=dx-dy/2;
|L1.1976|
0007b8 e1a00007 MOV r0,r7
0007bc e0871fa7 ADD r1,r7,r7,LSR #31
0007c0 e04840c1 SUB r4,r8,r1,ASR #1
;;;262 while(y1<=y2)
0007c4 e1a00000 NOP
|L1.1992|
0007c8 e156000b CMP r6,r11
0007cc ca000035 BGT |L1.2216|
;;;263 {
;;;264 PutPixel(x1,y1,color);
0007d0 e1a02009 MOV r2,r9
0007d4 e1a01006 MOV r1,r6
0007d8 e1a00005 MOV r0,r5
0007dc e59f30e0 LDR r3,|L1.2244|
0007e0 e5933000 LDR r3,[r3,#0] ; PutPixel
0007e4 e12fff33 BLX r3
;;;265 if(e>0){x1-=1;e-=dy;}
0007e8 e3540000 CMP r4,#0
0007ec da000001 BLE |L1.2040|
0007f0 e2455001 SUB r5,r5,#1
0007f4 e0444007 SUB r4,r4,r7
;;;266 y1+=1;
|L1.2040|
0007f8 e2866001 ADD r6,r6,#1
;;;267 e+=dx;
0007fc e0844008 ADD r4,r4,r8
;;;268 }
000800 eafffff0 B |L1.1992|
;;;269 }
;;;270 }
;;;271 else // dy<0
;;;272 {
;;;273 dy=-dy; // dy=abs(dy)
|L1.2052|
000804 e2677000 RSB r7,r7,#0
;;;274
;;;275 if(dx>=dy) // 5/8 octant
000808 e1580007 CMP r8,r7
00080c ba000012 BLT |L1.2140|
;;;276 {
;;;277 e=dy-dx/2;
000810 e1a00008 MOV r0,r8
000814 e0881fa8 ADD r1,r8,r8,LSR #31
000818 e04740c1 SUB r4,r7,r1,ASR #1
;;;278 while(x1>=x2)
00081c e1a00000 NOP
|L1.2080|
000820 e155000a CMP r5,r10
000824 ba00001f BLT |L1.2216|
;;;279 {
;;;280 PutPixel(x1,y1,color);
000828 e1a02009 MOV r2,r9
00082c e1a01006 MOV r1,r6
000830 e1a00005 MOV r0,r5
000834 e59f3088 LDR r3,|L1.2244|
000838 e5933000 LDR r3,[r3,#0] ; PutPixel
00083c e12fff33 BLX r3
;;;281 if(e>0){y1-=1;e-=dx;}
000840 e3540000 CMP r4,#0
000844 da000001 BLE |L1.2128|
000848 e2466001 SUB r6,r6,#1
00084c e0444008 SUB r4,r4,r8
;;;282 x1-=1;
|L1.2128|
000850 e2455001 SUB r5,r5,#1
;;;283 e+=dy;
000854 e0844007 ADD r4,r4,r7
;;;284 }
000858 eafffff0 B |L1.2080|
;;;285 }
;;;286 else // 6/8 octant
;;;287 {
;;;288 e=dx-dy/2;
|L1.2140|
00085c e1a00007 MOV r0,r7
000860 e0871fa7 ADD r1,r7,r7,LSR #31
000864 e04840c1 SUB r4,r8,r1,ASR #1
;;;289 while(y1>=y2)
000868 e1a00000 NOP
|L1.2156|
00086c e156000b CMP r6,r11
000870 ba00000c BLT |L1.2216|
;;;290 {
;;;291 PutPixel(x1,y1,color);
000874 e1a02009 MOV r2,r9
000878 e1a01006 MOV r1,r6
00087c e1a00005 MOV r0,r5
000880 e59f303c LDR r3,|L1.2244|
000884 e5933000 LDR r3,[r3,#0] ; PutPixel
000888 e12fff33 BLX r3
;;;292 if(e>0){x1-=1;e-=dy;}
00088c e3540000 CMP r4,#0
000890 da000001 BLE |L1.2204|
000894 e2455001 SUB r5,r5,#1
000898 e0444007 SUB r4,r4,r7
;;;293 y1-=1;
|L1.2204|
00089c e2466001 SUB r6,r6,#1
;;;294 e+=dx;
0008a0 e0844008 ADD r4,r4,r8
;;;295 }
0008a4 eafffff0 B |L1.2156|
;;;296 }
;;;297 }
;;;298 }
;;;299 }
|L1.2216|
0008a8 e8bd8ff8 LDMFD sp!,{r3-r11,pc}
|L1.2220|
0008ac 00000004 DCD ||.bss$2|| + 4
|L1.2224|
0008b0 00000008 DCD ||.bss$2|| + 8
|L1.2228|
0008b4 00fcfcfc DCD 0x00fcfcfc
|L1.2232|
0008b8 0000000c DCD ||.bss$2|| + 12
|L1.2236|
0008bc ffff0000 DCD 0xffff0000
|L1.2240|
0008c0 00000000 DCD _PutPixel1Bit
|L1.2244|
0008c4 00000000 DCD ||.bss$2||
|L1.2248|
0008c8 00000000 DCD _PutPixel2Bit
|L1.2252|
0008cc 00000000 DCD _PutPixel4Bit
|L1.2256|
0008d0 00000000 DCD _PutPixel8Bit
|L1.2260|
0008d4 00000000 DCD _PutPixel16Bit
|L1.2264|
0008d8 00000000 DCD _PutPixel18Bit
|L1.2268|
0008dc 13200000 DCD 0x13200000
|L1.2272|
0008e0 13600000 DCD 0x13600000
ENDP
GlibRectangle PROC
;;;156 void GlibRectangle(int x1,int y1,int x2,int y2,int color)
;;;157 {
0008e4 e92d41fc STMFD sp!,{r2-r8,lr}
0008e8 e1a05000 MOV r5,r0
0008ec e1a06001 MOV r6,r1
0008f0 e1a07002 MOV r7,r2
0008f4 e1a08003 MOV r8,r3
0008f8 e59d4020 LDR r4,[sp,#0x20]
;;;158 GlibLine(x1,y1,x2,y1,color);
0008fc e1a03006 MOV r3,r6
000900 e1a02007 MOV r2,r7
000904 e1a01006 MOV r1,r6
000908 e1a00005 MOV r0,r5
00090c e58d4000 STR r4,[sp,#0]
000910 ebfffffe BL GlibLine
;;;159 GlibLine(x2,y1,x2,y2,color);
000914 e1a03008 MOV r3,r8
000918 e1a02007 MOV r2,r7
00091c e1a01006 MOV r1,r6
000920 e1a00007 MOV r0,r7
000924 e58d4000 STR r4,[sp,#0]
000928 ebfffffe BL GlibLine
;;;160 GlibLine(x1,y2,x2,y2,color);
00092c e1a03008 MOV r3,r8
000930 e1a02007 MOV r2,r7
000934 e1a01008 MOV r1,r8
000938 e1a00005 MOV r0,r5
00093c e58d4000 STR r4,[sp,#0]
000940 ebfffffe BL GlibLine
;;;161 GlibLine(x1,y1,x1,y2,color);
000944 e1a03008 MOV r3,r8
000948 e1a02005 MOV r2,r5
00094c e1a01006 MOV r1,r6
000950 e1a00005 MOV r0,r5
000954 e58d4000 STR r4,[sp,#0]
000958 ebfffffe BL GlibLine
;;;162 }
00095c e8bd81fc LDMFD sp!,{r2-r8,pc}
ENDP
GlibFilledRectangle PROC
;;;165 void GlibFilledRectangle(int x1,int y1,int x2,int y2,int color)
;;;166 {
000960 e92d43f8 STMFD sp!,{r3-r9,lr}
000964 e1a08000 MOV r8,r0
000968 e1a06001 MOV r6,r1
00096c e1a09002 MOV r9,r2
000970 e1a07003 MOV r7,r3
000974 e59d5020 LDR r5,[sp,#0x20]
;;;167 int i;
;;;168
;;;169 for(i=y1;i<=y2;i++)
000978 e1a04006 MOV r4,r6
|L1.2428|
00097c e1540007 CMP r4,r7
000980 ca000009 BGT |L1.2476|
000984 ea000001 B |L1.2448|
|L1.2440|
000988 e2844001 ADD r4,r4,#1
00098c eafffffa B |L1.2428|
;;;170 GlibLine(x1,i,x2,i,color);
|L1.2448|
000990 e1a03004 MOV r3,r4
000994 e1a02009 MOV r2,r9
000998 e1a01004 MOV r1,r4
00099c e1a00008 MOV r0,r8
0009a0 e58d5000 STR r5,[sp,#0]
0009a4 ebfffffe BL GlibLine
0009a8 eafffff6 B |L1.2440|
;;;171 }
|L1.2476|
0009ac e8bd83f8 LDMFD sp!,{r3-r9,pc}
ENDP
GlibClearScr PROC
;;;302 void GlibClearScr(U32 c)
;;;303 {
0009b0 e92d4070 STMFD sp!,{r4-r6,lr}
0009b4 e1a06000 MOV r6,r0
;;;304 int i,j;
;;;305
;;;306 for(j=0;j<vframeheight;j++)
0009b8 e3a05000 MOV r5,#0
|L1.2492|
0009bc e51f0114 LDR r0,|L1.2224|
0009c0 e5900000 LDR r0,[r0,#0] ; vframeheight
0009c4 e1550000 CMP r5,r0
0009c8 2a000012 BCS |L1.2584|
0009cc ea000001 B |L1.2520|
|L1.2512|
0009d0 e2855001 ADD r5,r5,#1
0009d4 eafffff8 B |L1.2492|
;;;307 for(i=0;i<vframewidth;i++)
|L1.2520|
0009d8 e3a04000 MOV r4,#0
|L1.2524|
0009dc e51f0138 LDR r0,|L1.2220|
0009e0 e5900000 LDR r0,[r0,#0] ; vframewidth
0009e4 e1540000 CMP r4,r0
0009e8 2a000009 BCS |L1.2580|
0009ec ea000001 B |L1.2552|
|L1.2544|
0009f0 e2844001 ADD r4,r4,#1
0009f4 eafffff8 B |L1.2524|
;;;308 PutPixel(i,j,c);
|L1.2552|
0009f8 e1a02006 MOV r2,r6
0009fc e1a01005 MOV r1,r5
000a00 e1a00004 MOV r0,r4
000a04 e51f3148 LDR r3,|L1.2244|
000a08 e5933000 LDR r3,[r3,#0] ; PutPixel
000a0c e12fff33 BLX r3
000a10 eafffff6 B |L1.2544|
|L1.2580|
000a14 eaffffed B |L1.2512|
;;;309 }
|L1.2584|
000a18 e8bd8070 LDMFD sp!,{r4-r6,pc}
ENDP
AREA ||.bss||, NOINIT, ALIGN=2
PutPixel
||.bss$2||
% 4
vframewidth
% 4
vframeheight
% 4
framebuffer
% 4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -