📄 jerror.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jerror.o --depend=.\Obj\jerror.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\JPEG\jerror.c]
THUMB
AREA ||i.emit_message||, CODE, READONLY, ALIGN=1
emit_message PROC
;;;123
;;;124 METHODDEF(void) emit_message (j_common_ptr cinfo, int msg_level) {
000000 b510 PUSH {r4,lr}
;;;125 struct jpeg_error_mgr * err = cinfo->err;
;;;126 if (msg_level < 0) {
000002 6804 LDR r4,[r0,#0]
000004 2900 CMP r1,#0
000006 da0a BGE |L1.30|
;;;127 /* It's a warning message. Since corrupt files may generate many warnings,
;;;128 * the policy implemented here is to show only the first warning,
;;;129 * unless trace_level >= 3.
;;;130 */
;;;131 if (err->num_warnings == 0 || err->trace_level >= 3)
000008 6ee1 LDR r1,[r4,#0x6c]
00000a b111 CBZ r1,|L1.18|
00000c 6ea1 LDR r1,[r4,#0x68]
00000e 2903 CMP r1,#3
000010 db01 BLT |L1.22|
|L1.18|
;;;132 (*err->output_message) (cinfo);
000012 68a1 LDR r1,[r4,#8]
000014 4788 BLX r1
|L1.22|
;;;133 /* Always count warnings in num_warnings. */
;;;134 err->num_warnings++;
000016 6ee0 LDR r0,[r4,#0x6c]
000018 1c40 ADDS r0,r0,#1
00001a 66e0 STR r0,[r4,#0x6c]
|L1.28|
;;;135 } else {
;;;136 /* It's a trace message. Show it if trace_level >= msg_level. */
;;;137 if (err->trace_level >= msg_level)
;;;138 (*err->output_message) (cinfo);
;;;139 }
;;;140 }
00001c bd10 POP {r4,pc}
|L1.30|
00001e 6ea2 LDR r2,[r4,#0x68] ;137
000020 428a CMP r2,r1 ;137
000022 dbfb BLT |L1.28|
000024 68a1 LDR r1,[r4,#8] ;138
000026 e8bd4010 POP {r4,lr} ;138
00002a 4708 BX r1 ;138
;;;141
ENDP
AREA ||i.error_exit||, CODE, READONLY, ALIGN=1
error_exit PROC
;;;66 METHODDEF(void)
;;;67 error_exit (j_common_ptr cinfo)
000000 b510 PUSH {r4,lr}
;;;68 {
000002 4604 MOV r4,r0
;;;69 /* Always display the message */
;;;70 (*cinfo->err->output_message) (cinfo);
000004 6800 LDR r0,[r0,#0]
000006 6881 LDR r1,[r0,#8]
000008 4620 MOV r0,r4
00000a 4788 BLX r1
;;;71
;;;72 /* Let the memory manager delete any temp files before we die */
;;;73 jpeg_destroy(cinfo);
00000c 4620 MOV r0,r4
00000e e8bd4010 POP {r4,lr}
000012 f7ffbffe B.W jpeg_destroy
;;;74
;;;75 //exit(EXIT_FAILURE);
;;;76 }
;;;77
ENDP
AREA ||i.format_message||, CODE, READONLY, ALIGN=1
format_message PROC
;;;149
;;;150 METHODDEF(void) format_message (j_common_ptr cinfo, char * buffer) {
000000 b5f0 PUSH {r4-r7,lr}
;;;151 struct jpeg_error_mgr * err = cinfo->err;
;;;152 int msg_code = err->msg_code;
000002 6804 LDR r4,[r0,#0]
000004 b087 SUB sp,sp,#0x1c ;150
;;;153 const char * msgtext = NULL;
;;;154 const char * msgptr;
;;;155 char ch;
;;;156 boolean isstring;
;;;157
;;;158 /* Look up message string in proper table */
;;;159 if (msg_code > 0 && msg_code <= err->last_jpeg_message) {
000006 6960 LDR r0,[r4,#0x14]
000008 460f MOV r7,r1 ;150
00000a 2800 CMP r0,#0
00000c dd06 BLE |L3.28|
00000e 6f61 LDR r1,[r4,#0x74]
000010 4281 CMP r1,r0
000012 db03 BLT |L3.28|
;;;160 msgtext = err->jpeg_message_table[msg_code];
000014 6f21 LDR r1,[r4,#0x70]
000016 f8516020 LDR r6,[r1,r0,LSL #2]
00001a e00b B |L3.52|
|L3.28|
;;;161 } else if (err->addon_message_table != NULL &&
00001c 6fa2 LDR r2,[r4,#0x78]
00001e b152 CBZ r2,|L3.54|
;;;162 msg_code >= err->first_addon_message &&
000020 6fe1 LDR r1,[r4,#0x7c]
000022 4281 CMP r1,r0
000024 dc07 BGT |L3.54|
;;;163 msg_code <= err->last_addon_message) {
000026 f8d43080 LDR r3,[r4,#0x80]
00002a 4283 CMP r3,r0
00002c db03 BLT |L3.54|
;;;164 msgtext = err->addon_message_table[msg_code - err->first_addon_message];
00002e 1a41 SUBS r1,r0,r1
000030 f8526021 LDR r6,[r2,r1,LSL #2]
|L3.52|
;;;165 }
;;;166
;;;167 /* Defend against bogus message number */
;;;168 if (msgtext == NULL) {
000034 b916 CBNZ r6,|L3.60|
|L3.54|
;;;169 err->msg_parm.i[0] = msg_code;
;;;170 msgtext = err->jpeg_message_table[0];
000036 61a0 STR r0,[r4,#0x18]
000038 6f20 LDR r0,[r4,#0x70]
00003a 6806 LDR r6,[r0,#0]
|L3.60|
;;;171 }
;;;172
;;;173 /* Check for string parameter, as indicated by %s in the message text */
;;;174 isstring = FALSE;
00003c 2100 MOVS r1,#0
;;;175 msgptr = msgtext;
00003e 4635 MOV r5,r6
;;;176 while ((ch = *msgptr++) != '\0') {
000040 e005 B |L3.78|
|L3.66|
;;;177 if (ch == '%') {
000042 2825 CMP r0,#0x25
000044 d103 BNE |L3.78|
;;;178 if (*msgptr == 's') isstring = TRUE;
000046 7828 LDRB r0,[r5,#0]
000048 2873 CMP r0,#0x73
00004a d005 BEQ |L3.88|
00004c e003 B |L3.86|
|L3.78|
00004e f8150b01 LDRB r0,[r5],#1 ;176
000052 2800 CMP r0,#0 ;176
000054 d1f5 BNE |L3.66|
|L3.86|
;;;179 break;
;;;180 }
;;;181 }
;;;182
;;;183 /* Format the message into the passed buffer */
;;;184 if (isstring)
000056 b141 CBZ r1,|L3.106|
|L3.88|
;;;185 sprintf(buffer, msgtext, err->msg_parm.s);
000058 f1040218 ADD r2,r4,#0x18
00005c 4631 MOV r1,r6
00005e 4638 MOV r0,r7
000060 b007 ADD sp,sp,#0x1c
000062 e8bd40f0 POP {r4-r7,lr}
000066 f7ffbffe B.W __2sprintf
|L3.106|
;;;186 else
;;;187 sprintf(buffer, msgtext,
00006a f1040028 ADD r0,r4,#0x28
00006e c80f LDM r0,{r0-r3}
000070 ad02 ADD r5,sp,#8
000072 c50f STM r5!,{r0-r3}
000074 e9d42308 LDRD r2,r3,[r4,#0x20]
000078 e9cd2300 STRD r2,r3,[sp,#0]
00007c e9d42306 LDRD r2,r3,[r4,#0x18]
000080 4631 MOV r1,r6
000082 4638 MOV r0,r7
000084 f7fffffe BL __2sprintf
;;;188 err->msg_parm.i[0], err->msg_parm.i[1],
;;;189 err->msg_parm.i[2], err->msg_parm.i[3],
;;;190 err->msg_parm.i[4], err->msg_parm.i[5],
;;;191 err->msg_parm.i[6], err->msg_parm.i[7]);
;;;192 }
000088 b007 ADD sp,sp,#0x1c
00008a bdf0 POP {r4-r7,pc}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -