📄 guivalf.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guivalf.o --depend=.\Obj\guivalf.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Core\GUIValf.c]
THUMB
AREA ||i.GUI_DispFloat||, CODE, READONLY, ALIGN=1
GUI_DispFloat PROC
;;;74 */
;;;75 void GUI_DispFloat(float f, char Len) {
000000 b570 PUSH {r4-r6,lr}
000002 4604 MOV r4,r0
000004 460d MOV r5,r1
;;;76 int Decs;
;;;77 Decs = Len - GUI_Long2Len((long)f)-1;
000006 f7fffffe BL __aeabi_f2iz
00000a f7fffffe BL GUI_Long2Len
00000e 1a28 SUBS r0,r5,r0
000010 1e40 SUBS r0,r0,#1
;;;78 if ((f < 0) && (f > -1)) { /* If value < 0 and > -1 (e.g. -0.123) decrement Decs */
000012 f10441ff ADD r1,r4,#0x7f800000
000016 f1b15f7c CMP r1,#0x3f000000
00001a d200 BCS |L1.30|
;;;79 Decs--;
00001c 1e40 SUBS r0,r0,#1
|L1.30|
;;;80 }
;;;81 if (Decs<0)
00001e 2800 CMP r0,#0
000020 da00 BGE |L1.36|
;;;82 Decs =0;
000022 2000 MOVS r0,#0
|L1.36|
;;;83 _DispFloatFix(f, Len, (char)Decs, 0);
000024 b2c2 UXTB r2,r0
000026 4629 MOV r1,r5
000028 4620 MOV r0,r4
00002a e8bd4070 POP {r4-r6,lr}
00002e 2300 MOVS r3,#0
000030 f7ffbffe B.W _DispFloatFix
;;;84 }
;;;85
ENDP
AREA ||i.GUI_DispFloatFix||, CODE, READONLY, ALIGN=1
GUI_DispFloatFix PROC
;;;53 */
;;;54 void GUI_DispFloatFix(float f, char Len, char Decs) {
000000 2300 MOVS r3,#0
;;;55 _DispFloatFix(f, Len, Decs, 0);
000002 f7ffbffe B.W _DispFloatFix
;;;56 }
;;;57
ENDP
AREA ||i.GUI_DispFloatMin||, CODE, READONLY, ALIGN=1
GUI_DispFloatMin PROC
;;;61 */
;;;62 void GUI_DispFloatMin(float f, char Fract) {
000000 b570 PUSH {r4-r6,lr}
000002 4605 MOV r5,r0
000004 460c MOV r4,r1
;;;63 char Len;
;;;64 Len = GUI_Long2Len((long)f);
000006 f7fffffe BL __aeabi_f2iz
00000a f7fffffe BL GUI_Long2Len
;;;65 if ((f < 0) && (f > -1)) { /* If value < 0 and > -1 (e.g. -0.123) increment length by 1 */
00000e f10541ff ADD r1,r5,#0x7f800000
000012 b2c0 UXTB r0,r0 ;64
000014 f1b15f7c CMP r1,#0x3f000000
000018 d201 BCS |L3.30|
;;;66 Len++;
00001a 1c40 ADDS r0,r0,#1
00001c b2c0 UXTB r0,r0
|L3.30|
;;;67 }
;;;68 _DispFloatFix(f, (char)(Len + Fract + (Fract ? 1 : 0)), (char)Fract, 0);
00001e 1901 ADDS r1,r0,r4
000020 b10c CBZ r4,|L3.38|
000022 2001 MOVS r0,#1
000024 e000 B |L3.40|
|L3.38|
000026 2000 MOVS r0,#0
|L3.40|
000028 4408 ADD r0,r0,r1
00002a b2c1 UXTB r1,r0
00002c 4622 MOV r2,r4
00002e 4628 MOV r0,r5
000030 e8bd4070 POP {r4-r6,lr}
000034 2300 MOVS r3,#0
000036 f7ffbffe B.W _DispFloatFix
;;;69 }
;;;70
ENDP
AREA ||i.GUI_DispSFloatFix||, CODE, READONLY, ALIGN=1
GUI_DispSFloatFix PROC
;;;89 */
;;;90 void GUI_DispSFloatFix(float f, char Len, char Fract) {
000000 2301 MOVS r3,#1
;;;91 _DispFloatFix (f, Len, Fract, 1);
000002 f7ffbffe B.W _DispFloatFix
;;;92 }
;;;93
ENDP
AREA ||i.GUI_DispSFloatMin||, CODE, READONLY, ALIGN=1
GUI_DispSFloatMin PROC
;;;97 */
;;;98 void GUI_DispSFloatMin(float f, char Fract) {
000000 b570 PUSH {r4-r6,lr}
000002 4604 MOV r4,r0
000004 460d MOV r5,r1
;;;99 char Len;
;;;100 Len = GUI_Long2Len((long)f);
000006 f7fffffe BL __aeabi_f2iz
00000a f7fffffe BL GUI_Long2Len
;;;101 if ((f < 0) && (f > -1)) { /* If value < 0 and > -1 (e.g. -0.123) increment length by 1 */
00000e f10441ff ADD r1,r4,#0x7f800000
000012 b2c0 UXTB r0,r0 ;100
000014 f1b15f7c CMP r1,#0x3f000000
000018 d201 BCS |L5.30|
;;;102 Len++;
00001a 1c40 ADDS r0,r0,#1
00001c b2c0 UXTB r0,r0
|L5.30|
;;;103 }
;;;104 if (f>0) {
00001e f5b40f00 CMP r4,#0x800000
000022 db01 BLT |L5.40|
;;;105 Len++;
000024 1c40 ADDS r0,r0,#1
000026 b2c0 UXTB r0,r0
|L5.40|
;;;106 }
;;;107 _DispFloatFix(f, (char)(Len + Fract + (Fract ? 1 : 0)), (char)Fract, 1);
000028 1941 ADDS r1,r0,r5
00002a b10d CBZ r5,|L5.48|
00002c 2001 MOVS r0,#1
00002e e000 B |L5.50|
|L5.48|
000030 2000 MOVS r0,#0
|L5.50|
000032 4408 ADD r0,r0,r1
000034 b2c1 UXTB r1,r0
000036 462a MOV r2,r5
000038 4620 MOV r0,r4
00003a e8bd4070 POP {r4-r6,lr}
00003e 2301 MOVS r3,#1
000040 f7ffbffe B.W _DispFloatFix
;;;108 }
;;;109
ENDP
AREA ||i._DispFloatFix||, CODE, READONLY, ALIGN=2
_DispFloatFix PROC
;;;32 */
;;;33 static void _DispFloatFix(float f, char Len, char Decs, int DrawPlusSign) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4607 MOV r7,r0
;;;34 f *= GUI_Pow10[(unsigned)Decs];
000006 4813 LDR r0,|L6.84|
000008 460e MOV r6,r1 ;33
00000a 4614 MOV r4,r2 ;33
00000c 461d MOV r5,r3 ;33
00000e f8500022 LDR r0,[r0,r2,LSL #2]
000012 f7fffffe BL __aeabi_ui2f
000016 4639 MOV r1,r7
000018 f7fffffe BL __aeabi_fmul
;;;35 f += 0.5;
00001c f04f517c MOV r1,#0x3f000000
000020 f7fffffe BL __aeabi_fadd
;;;36 f = (float) floor (f);
000024 f7fffffe BL __aeabi_f2d
000028 f7fffffe BL floor
00002c f7fffffe BL __aeabi_d2f
;;;37 if (DrawPlusSign) {
000030 b13d CBZ r5,|L6.66|
;;;38 GUI_DispSDecShift((long)f, Len, Decs);
000032 f7fffffe BL __aeabi_f2iz
000036 4622 MOV r2,r4
000038 4631 MOV r1,r6
00003a e8bd41f0 POP {r4-r8,lr}
00003e f7ffbffe B.W GUI_DispSDecShift
|L6.66|
;;;39 } else {
;;;40 GUI_DispDecShift((long)f, Len, Decs);
000042 f7fffffe BL __aeabi_f2iz
000046 4622 MOV r2,r4
000048 4631 MOV r1,r6
00004a e8bd41f0 POP {r4-r8,lr}
00004e f7ffbffe B.W GUI_DispDecShift
;;;41 }
;;;42 }
;;;43
ENDP
000052 0000 DCW 0x0000
|L6.84|
DCD GUI_Pow10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -