📄 lcd2_frame_buffer.lst
字号:
249 $LCFI6: 250 0204 4000B0AF sw $16,64($sp) 251 $LCFI7: 41:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** DPRINTF("FB: %X, RGB(%d, %d, %d), W: %d, H: %d\n", address, r, g, b, info->width, info->height); 42:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int max = info->width + info->height; 252 .loc 1 42 0 253 0208 4000A38C lw $3,64($5) 254 .loc 1 40 0 255 020c 2168A000 move $13,$5 256 .loc 1 42 0 257 0210 4400A58C lw $5,68($5) 258 .loc 1 40 0 259 0214 21888000 move $17,$4 260 0218 FF00D830 andi $24,$6,0x00ff 261 021c FF00F930 andi $25,$7,0x00ff 262 0220 6800AF93 lbu $15,104($sp) 263 .loc 1 42 0 264 0224 21606500 addu $12,$3,$5 43:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int maxAlpha = 0x0FF; //info->pixel_info.a_mask >> info->pixel_info.a_shift; 265 .loc 1 43 0 266 0228 FF001224 li $18,255 # 0xff 44:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int x, y; 45:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** 46:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** for(y = 0; y < info->height; ++y) 267 .loc 1 46 0 268 022c 4E00A018 blez $5,$L35 269 0230 21700000 move $14,$0 270 271 0234 EB51023C li $2,1374355456 # 0x51eb0000 272 0238 1F855434 ori $20,$2,0x851f 273 023c 4000A925 addiu $9,$13,64 274 0240 21980000 move $19,$0 275 $L33: 47:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** { 48:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** //printf("Row %d[0]: %X\n", y, &address[(y * info->width) + 0]); 49:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** for(x = 0; x < info->width; ++x) 276 .loc 1 49 0 277 0244 44006018 blez $3,$L37 278 0248 21500000 move $10,$0 279 280 024c 21808002 move $16,$20 281 0250 21406002 move $8,$19 282 $L32: 50:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** { 51:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** address[(y * info->width) + x] = pixel_convert(info->pixel_info, ((((x + y) * 100) / max) * maxA 283 .loc 1 51 0 284 0254 02206E70 mul $4,$3,$14 285 $LBB6: 286 .loc 2 277 0 287 0258 2130A001 move $6,$13 288 025c 2138A003 move $7,$sp 289 $LBE6: 290 .loc 1 51 0 291 0260 21108A00 addu $2,$4,$10 292 0264 80100200 sll $2,$2,2 293 0268 21585100 addu $11,$2,$17 294 $L30:GAS LISTING /tmp/cc7wtJ5I.s page 12 295 $LBB7: 296 .loc 2 277 0 297 026c 0000C28C lw $2,0($6) 298 0270 0400C38C lw $3,4($6) 299 0274 0800C48C lw $4,8($6) 300 0278 0C00C58C lw $5,12($6) 301 027c 1000C624 addiu $6,$6,16 302 0280 0000E2AC sw $2,0($7) 303 0284 0400E3AC sw $3,4($7) 304 0288 0800E4AC sw $4,8($7) 305 028c 0C00E5AC sw $5,12($7) 306 0290 F6FFC914 bne $6,$9,$L30 307 0294 1000E724 addiu $7,$7,16 308 309 0298 1A000C01 div $0,$8,$12 310 029c 02008015 bne $12,$0,1f 311 02a0 00000000 nop 312 02a4 0D000700 break 7 313 1: 314 $LBB8: 315 .loc 2 278 0 316 02a8 3000A78F lw $7,48($sp) 317 02ac 2000A28F lw $2,32($sp) 318 02b0 3400A68F lw $6,52($sp) 319 02b4 0738F800 sra $7,$24,$7 320 02b8 04384700 sll $7,$7,$2 321 02bc 1000A28F lw $2,16($sp) 322 02c0 2400A38F lw $3,36($sp) 323 02c4 3800A58F lw $5,56($sp) 324 02c8 2438E200 and $7,$7,$2 325 02cc 1400A28F lw $2,20($sp) 326 02d0 0730D900 sra $6,$25,$6 327 02d4 04306600 sll $6,$6,$3 328 02d8 2800A38F lw $3,40($sp) 329 02dc 2430C200 and $6,$6,$2 330 02e0 1800A28F lw $2,24($sp) 331 02e4 0728AF00 sra $5,$15,$5 332 02e8 04286500 sll $5,$5,$3 333 02ec 2428A200 and $5,$5,$2 334 02f0 3C00A38F lw $3,60($sp) 335 $LBE8: 336 $LBE7: 337 .loc 1 49 0 338 02f4 01004A25 addiu $10,$10,1 339 $LBB9: 340 .loc 2 277 0 341 02f8 12200000 mflo $4 342 02fc 00000000 nop 343 0300 00000000 nop 344 0304 02209270 mul $4,$4,$18 345 0308 18009000 mult $4,$16 346 030c C3270400 sra $4,$4,31 347 0310 10100000 mfhi $2 348 0314 43110200 sra $2,$2,5 349 0318 23104400 subu $2,$2,$4 350 031c FF004230 andi $2,$2,0x00ff 351 $LBB10:GAS LISTING /tmp/cc7wtJ5I.s page 13 352 .loc 2 278 0 353 0320 2C00A48F lw $4,44($sp) 354 0324 07106200 sra $2,$2,$3 355 0328 1C00A38F lw $3,28($sp) 356 032c 04108200 sll $2,$2,$4 357 0330 24104300 and $2,$2,$3 358 0334 25104700 or $2,$2,$7 359 0338 25104600 or $2,$2,$6 360 033c 25104500 or $2,$2,$5 361 $LBE10: 362 $LBE9: 363 .loc 2 277 0 364 0340 000062AD sw $2,0($11) 365 .loc 1 49 0 366 0344 4000A38D lw $3,64($13) 367 0348 2A104301 slt $2,$10,$3 368 034c C1FF4014 bne $2,$0,$L32 369 0350 64000825 addiu $8,$8,100 370 371 0354 4400A58D lw $5,68($13) 372 $L37: 373 .loc 1 46 0 374 0358 0100CE25 addiu $14,$14,1 375 035c 2A10C501 slt $2,$14,$5 376 0360 B8FF4014 bne $2,$0,$L33 377 0364 64007326 addiu $19,$19,100 378 379 $L35: 380 0368 5000B48F lw $20,80($sp) 381 036c 4C00B38F lw $19,76($sp) 382 0370 4800B28F lw $18,72($sp) 383 0374 4400B18F lw $17,68($sp) 384 0378 4000B08F lw $16,64($sp) 385 037c 0800E003 j $31 386 0380 5800BD27 addiu $sp,$sp,88 387 388 .set macro 389 .set reorder 390 $LFE5: 391 .end fb_fill_transparency_gradient 392 .align 2 393 .globl fb_fill_horizontal_gradient 394 .ent fb_fill_horizontal_gradient 395 .type fb_fill_horizontal_gradient, @function 396 fb_fill_horizontal_gradient: 397 $LFB6: 52:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** } 53:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** //printf("Row %d[%d]: %X\n", y, x--, &address[(y * info->width) + x]); 54:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** } 55:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** } 56:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** 57:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** void fb_fill_horizontal_gradient(FRAME_BUFFER_ADDRESS address, const FRAME_BUFFER_INFO* info, uint8 58:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** { 398 .loc 1 58 0 399 .frame $sp,120,$31 # vars= 80, regs= 9/0, args= 0, gp= 0 400 .mask 0x40ff0000,-8 401 .fmask 0x00000000,0GAS LISTING /tmp/cc7wtJ5I.s page 14 402 .set noreorder 403 .set nomacro 404 405 0384 88FFBD27 addiu $sp,$sp,-120 406 $LCFI8: 407 0388 9000A893 lbu $8,144($sp) 408 038c 7000BEAF sw $fp,112($sp) 409 $LCFI9: 410 0390 6800B6AF sw $22,104($sp) 411 $LCFI10: 412 0394 5400B1AF sw $17,84($sp) 413 $LCFI11: 414 0398 5000B0AF sw $16,80($sp) 415 $LCFI12: 416 039c 6C00B7AF sw $23,108($sp) 417 $LCFI13: 418 03a0 6400B5AF sw $21,100($sp) 419 $LCFI14: 420 03a4 6000B4AF sw $20,96($sp) 421 $LCFI15: 422 03a8 5C00B3AF sw $19,92($sp) 423 $LCFI16: 424 03ac 5800B2AF sw $18,88($sp) 425 $LCFI17: 59:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int x, y, fb_index; 60:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int width = info->width; 426 .loc 1 60 0 427 03b0 4000A38C lw $3,64($5) 428 .loc 1 58 0 429 03b4 FF00D130 andi $17,$6,0x00ff 430 03b8 2160A000 move $12,$5 61:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int width_scale = 100; 431 .loc 1 61 0 432 03bc 64000F24 li $15,100 # 0x64 62:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** //We have to scale up the width in order to get the necessary resolution to do a clean gradient 63:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int scaled_width = width * width_scale; 64:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** 65:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** //calculate how many color shades to increment/decrement with each pixel. 66:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int a_delta = (a2 > a1) ? (a2 - a1) : (a1 - a2); 433 .loc 1 66 0 434 03c0 2B502802 sltu $10,$17,$8 435 03c4 23281101 subu $5,$8,$17 436 03c8 23102802 subu $2,$17,$8 437 .loc 1 58 0 438 03cc FF00F830 andi $24,$7,0x00ff 439 .loc 1 63 0 440 03d0 02706F70 mul $14,$3,$15 441 .loc 1 66 0 442 03d4 0A284A00 movz $5,$2,$10 443 .loc 1 58 0 444 03d8 21F08000 move $fp,$4 445 03dc 8800B993 lbu $25,136($sp) 446 03e0 8C00B093 lbu $16,140($sp) 447 03e4 9400A693 lbu $6,148($sp) 448 03e8 9800A793 lbu $7,152($sp) 449 03ec 9C00A993 lbu $9,156($sp) 67:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int a_mod = (a1 == a2) ? 0 : scaled_width / a_delta;GAS LISTING /tmp/cc7wtJ5I.s page 15 450 .loc 1 67 0 451 03f0 06002812 beq $17,$8,$L42 452 03f4 21B00000 move $22,$0 453 454 03f8 1A00C501 div $0,$14,$5 455 03fc 0200A014 bne $5,$0,1f 456 0400 00000000 nop 457 0404 0D000700 break 7 458 1: 459 0408 12B00000 mflo $22 460 $L42: 68:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** if((a2 != a1) && scaled_width % a_delta != 0) 69:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** a_mod++; 461 .loc 1 69 0 462 .loc 1 68 0 463 040c 07001111 beq $8,$17,$L43 464 0410 0100C326 addiu $3,$22,1 465 466 0414 1A00C501 div $0,$14,$5 467 0418 0200A014 bne $5,$0,1f 468 041c 00000000 nop 469 0420 0D000700 break 7 470 1: 471 0424 10100000 mfhi $2 472 .loc 1 69 0 473 0428 0BB06200 movn $22,$3,$2 474 $L43: 70:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int a_dir = (a2 > a1) ? 1 : -1; 475 .loc 1 70 0 476 042c FFFF0224 li $2,-1 # 0xffffffffffffffff 477 0430 01000824 li $8,1 # 0x1 71:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** 72:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int r_delta = (r2 > r1) ? (r2 - r1) : (r1 - r2); 478 .loc 1 72 0 479 0434 2B280603 sltu $5,$24,$6 480 0438 2320D800 subu $4,$6,$24 481 043c 23180603 subu $3,$24,$6 482 .loc 1 70 0 483 0440 0A404A00 movz $8,$2,$10 484 0444 4000A8AF sw $8,64($sp) 485 .loc 1 72 0 486 0448 0A206500 movz $4,$3,$5 73:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** int r_mod = (r1 == r2) ? 0 : scaled_width / r_delta; 487 .loc 1 73 0 488 044c 06000613 beq $24,$6,$L49 489 0450 21B80000 move $23,$0 490 491 0454 1A00C401 div $0,$14,$4 492 0458 02008014 bne $4,$0,1f 493 045c 00000000 nop 494 0460 0D000700 break 7 495 1: 496 0464 12B80000 mflo $23 497 $L49: 74:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** if((r2 != r1) && scaled_width % r_delta != 0) 75:/mnt/hgfs/boot/booter/source/lcd2_frame_buffer.c **** r_mod++; 498 .loc 1 75 0GAS LISTING /tmp/cc7wtJ5I.s page 16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -