TianoCore EDK2 master
Loading...
Searching...
No Matches
EdbDisasmSupport.c
Go to the documentation of this file.
1
9#include "Edb.h"
10
11extern EDB_DISASM_INSTRUCTION mEdbDisasmInstructionTable[];
12
13typedef struct {
14 CHAR16 Name[EDB_INSTRUCTION_NAME_MAX_LENGTH];
15 CHAR16 Content[EDB_INSTRUCTION_CONTENT_MAX_LENGTH];
16 CHAR16 Tail;
18
19EDB_INSTRUCTION_STRING mInstructionString;
20UINTN mInstructionNameOffset;
21UINTN mInstructionContentOffset;
22
31VOID
33 IN UINTN InstructionNameOffset,
34 IN UINTN InstructionContentOffset
35 )
36{
37 mInstructionNameOffset = InstructionNameOffset;
38 mInstructionContentOffset = InstructionContentOffset;
39
40 return;
41}
42
50CHAR16 *
52 VOID
53 )
54{
55 ZeroMem (&mInstructionString, sizeof (mInstructionString));
56 mInstructionNameOffset = 0;
57 mInstructionContentOffset = 0;
58
59 return (CHAR16 *)&mInstructionString;
60}
61
69CHAR16 *
71 VOID
72 )
73{
74 CHAR16 *Char;
75
76 for (Char = (CHAR16 *)&mInstructionString; Char < &mInstructionString.Tail; Char++) {
77 if (*Char == 0) {
78 *Char = L' ';
79 }
80 }
81
82 mInstructionString.Tail = 0;
83
84 mInstructionNameOffset = 0;
85 mInstructionContentOffset = 0;
86
87 return (CHAR16 *)&mInstructionString;
88}
89
101BOOLEAN
103 IN UINT16 Data16,
104 OUT UINTN *NaturalUnits,
105 OUT UINTN *ConstantUnits
106 )
107{
108 BOOLEAN Sign;
109 UINTN NaturalUnitBit;
110
111 Sign = (BOOLEAN)(Data16 >> 15);
112 NaturalUnitBit = (UINTN)((Data16 >> 12) & 0x7);
113 NaturalUnitBit *= 2;
114 Data16 = Data16 & 0xFFF;
115 *NaturalUnits = (UINTN)(Data16 & ((1 << NaturalUnitBit) - 1));
116 *ConstantUnits = (UINTN)((Data16 >> NaturalUnitBit) & ((1 << (12 - NaturalUnitBit)) - 1));
117
118 return Sign;
119}
120
132BOOLEAN
134 IN UINT32 Data32,
135 OUT UINTN *NaturalUnits,
136 OUT UINTN *ConstantUnits
137 )
138{
139 BOOLEAN Sign;
140 UINTN NaturalUnitBit;
141
142 Sign = (BOOLEAN)(Data32 >> 31);
143 NaturalUnitBit = (UINTN)((Data32 >> 28) & 0x7);
144 NaturalUnitBit *= 4;
145 Data32 = Data32 & 0xFFFFFFF;
146 *NaturalUnits = (UINTN)(Data32 & ((1 << NaturalUnitBit) - 1));
147 *ConstantUnits = (UINTN)((Data32 >> NaturalUnitBit) & ((1 << (28 - NaturalUnitBit)) - 1));
148
149 return Sign;
150}
151
163BOOLEAN
165 IN UINT64 Data64,
166 OUT UINT64 *NaturalUnits,
167 OUT UINT64 *ConstantUnits
168 )
169{
170 BOOLEAN Sign;
171 UINTN NaturalUnitBit;
172
173 Sign = (BOOLEAN)RShiftU64 (Data64, 63);
174 NaturalUnitBit = (UINTN)(RShiftU64 (Data64, 60) & 0x7);
175 NaturalUnitBit *= 8;
176 Data64 = RShiftU64 (LShiftU64 (Data64, 4), 4);
177 *NaturalUnits = (UINT64)(Data64 & (LShiftU64 (1, NaturalUnitBit) - 1));
178 *ConstantUnits = (UINT64)(RShiftU64 (Data64, NaturalUnitBit) & (LShiftU64 (1, (60 - NaturalUnitBit)) - 1));
179
180 return Sign;
181}
182
192UINT8
194 IN UINT64 Value
195 )
196{
197 if (Value >= 10000000000000) {
198 return 14;
199 } else if (Value >= 1000000000000) {
200 return 13;
201 } else if (Value >= 100000000000) {
202 return 12;
203 } else if (Value >= 10000000000) {
204 return 11;
205 } else if (Value >= 1000000000) {
206 return 10;
207 } else if (Value >= 100000000) {
208 return 9;
209 } else if (Value >= 10000000) {
210 return 8;
211 } else if (Value >= 1000000) {
212 return 7;
213 } else if (Value >= 100000) {
214 return 6;
215 } else if (Value >= 10000) {
216 return 5;
217 } else if (Value >= 1000) {
218 return 4;
219 } else if (Value >= 100) {
220 return 3;
221 } else if (Value >= 10) {
222 return 2;
223 } else {
224 return 1;
225 }
226}
227
237UINTN
239 IN CHAR16 *Name
240 )
241{
243 mInstructionString.Name,
244 EDB_INSTRUCTION_NAME_MAX_SIZE,
245 mInstructionNameOffset,
246 L"%s",
247 Name
248 );
249 mInstructionNameOffset += StrLen (Name);
250
251 return mInstructionNameOffset;
252}
253
263UINTN
265 IN UINT8 Operands
266 )
267{
268 if ((Operands & OPERAND_M_INDIRECT1) != 0) {
270 mInstructionString.Content,
271 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
272 mInstructionContentOffset,
273 L"@"
274 );
275 mInstructionContentOffset += 1;
276 }
277
279 mInstructionString.Content,
280 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
281 mInstructionContentOffset,
282 L"R%d",
283 (UINTN)(Operands & OPERAND_M_OP1)
284 );
285 mInstructionContentOffset += 2;
286
287 return mInstructionContentOffset;
288}
289
299UINTN
301 IN UINT8 Operands
302 )
303{
304 if ((Operands & OPERAND_M_INDIRECT2) != 0) {
306 mInstructionString.Content,
307 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
308 mInstructionContentOffset,
309 L"@"
310 );
311 mInstructionContentOffset += 1;
312 }
313
315 mInstructionString.Content,
316 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
317 mInstructionContentOffset,
318 L"R%d",
319 (UINTN)((Operands & OPERAND_M_OP2) >> 4)
320 );
321 mInstructionContentOffset += 2;
322
323 return mInstructionContentOffset;
324}
325
335UINTN
337 IN UINT8 Operands
338 )
339{
340 switch (Operands & OPERAND_M_OP1) {
341 case 0:
343 mInstructionString.Content,
344 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
345 mInstructionContentOffset,
346 L"[FLAGS]"
347 );
348 mInstructionContentOffset += 7;
349 break;
350 case 1:
352 mInstructionString.Content,
353 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
354 mInstructionContentOffset,
355 L"[IP]"
356 );
357 mInstructionContentOffset += 4;
358 break;
359 }
360
361 return mInstructionContentOffset;
362}
363
373UINTN
375 IN UINT8 Operands
376 )
377{
378 switch ((Operands & OPERAND_M_OP2) >> 4) {
379 case 0:
381 mInstructionString.Content,
382 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
383 mInstructionContentOffset,
384 L"[FLAGS]"
385 );
386 mInstructionContentOffset += 7;
387 break;
388 case 1:
390 mInstructionString.Content,
391 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
392 mInstructionContentOffset,
393 L"[IP]"
394 );
395 mInstructionContentOffset += 4;
396 break;
397 }
398
399 return mInstructionContentOffset;
400}
401
413UINTN
415 IN BOOLEAN Sign,
416 IN UINTN NaturalUnits,
417 IN UINTN ConstantUnits
418 )
419{
421 mInstructionString.Content,
422 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
423 mInstructionContentOffset,
424 L"(%s%d,%s%d)",
425 Sign ? L"-" : L"+",
426 NaturalUnits,
427 Sign ? L"-" : L"+",
428 ConstantUnits
429 );
430 mInstructionContentOffset = mInstructionContentOffset + 5 + EdbGetBitWidth (NaturalUnits) + EdbGetBitWidth (ConstantUnits);
431
432 return mInstructionContentOffset;
433}
434
446UINTN
448 IN BOOLEAN Sign,
449 IN UINT64 NaturalUnits,
450 IN UINT64 ConstantUnits
451 )
452{
454 mInstructionString.Content,
455 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
456 mInstructionContentOffset,
457 L"(%s%ld,%s%ld)",
458 Sign ? L"-" : L"+",
459 NaturalUnits,
460 Sign ? L"-" : L"+",
461 ConstantUnits
462 );
463 mInstructionContentOffset = mInstructionContentOffset + 5 + EdbGetBitWidth (NaturalUnits) + EdbGetBitWidth (ConstantUnits);
464
465 return mInstructionContentOffset;
466}
467
477UINTN
479 IN UINT16 Data16
480 )
481{
482 BOOLEAN Sign;
483 UINTN NaturalUnits;
484 UINTN ConstantUnits;
485 UINTN Offset;
486
487 Sign = EdbGetNaturalIndex16 (Data16, &NaturalUnits, &ConstantUnits);
488 Offset = EdbPrintIndexData (Sign, NaturalUnits, ConstantUnits);
489
490 return Offset;
491}
492
502UINTN
504 IN UINT32 Data32
505 )
506{
507 BOOLEAN Sign;
508 UINTN NaturalUnits;
509 UINTN ConstantUnits;
510 UINTN Offset;
511
512 Sign = EdbGetNaturalIndex32 (Data32, &NaturalUnits, &ConstantUnits);
513 Offset = EdbPrintIndexData (Sign, NaturalUnits, ConstantUnits);
514
515 return Offset;
516}
517
527UINTN
529 IN UINT64 Data64
530 )
531{
532 BOOLEAN Sign;
533 UINT64 NaturalUnits;
534 UINT64 ConstantUnits;
535 UINTN Offset;
536
537 Sign = EdbGetNaturalIndex64 (Data64, &NaturalUnits, &ConstantUnits);
538 Offset = EdbPrintIndexData64 (Sign, NaturalUnits, ConstantUnits);
539
540 return Offset;
541}
542
552UINTN
554 IN UINT8 Data
555 )
556{
558 mInstructionString.Content,
559 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
560 mInstructionContentOffset,
561 L"(0x%02x)",
562 (UINTN)Data
563 );
564 mInstructionContentOffset += 6;
565
566 return mInstructionContentOffset;
567}
568
578UINTN
580 IN UINT16 Data
581 )
582{
584 mInstructionString.Content,
585 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
586 mInstructionContentOffset,
587 L"(0x%04x)",
588 (UINTN)Data
589 );
590 mInstructionContentOffset += 8;
591
592 return mInstructionContentOffset;
593}
594
604UINTN
606 IN UINT32 Data
607 )
608{
610 mInstructionString.Content,
611 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
612 mInstructionContentOffset,
613 L"(0x%08x)",
614 (UINTN)Data
615 );
616 mInstructionContentOffset += 12;
617
618 return mInstructionContentOffset;
619}
620
630UINTN
632 IN UINT64 Data
633 )
634{
636 mInstructionString.Content,
637 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
638 mInstructionContentOffset,
639 L"(0x%016lx)",
640 Data
641 );
642 mInstructionContentOffset += 20;
643
644 return mInstructionContentOffset;
645}
646
656UINTN
658 IN UINTN Data
659 )
660{
662 mInstructionString.Content,
663 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
664 mInstructionContentOffset,
665 L"(%d)",
666 (UINTN)Data
667 );
668 mInstructionContentOffset = mInstructionContentOffset + 2 + EdbGetBitWidth (Data);
669
670 return mInstructionContentOffset;
671}
672
682UINTN
684 IN UINT64 Data64
685 )
686{
688 mInstructionString.Content,
689 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
690 mInstructionContentOffset,
691 L"(%ld)",
692 Data64
693 );
694 mInstructionContentOffset = mInstructionContentOffset + 2 + EdbGetBitWidth (Data64);
695
696 return mInstructionContentOffset;
697}
698
708UINTN
710 IN UINT8 Data8
711 )
712{
714 mInstructionString.Content,
715 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
716 mInstructionContentOffset,
717 L"0x%02x",
718 (UINTN)Data8
719 );
720 mInstructionContentOffset += 4;
721
722 return mInstructionContentOffset;
723}
724
734UINTN
736 IN UINT16 Data16
737 )
738{
740 mInstructionString.Content,
741 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
742 mInstructionContentOffset,
743 L"0x%04x",
744 (UINTN)Data16
745 );
746 mInstructionContentOffset += 6;
747
748 return mInstructionContentOffset;
749}
750
760UINTN
762 IN UINT32 Data32
763 )
764{
766 mInstructionString.Content,
767 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
768 mInstructionContentOffset,
769 L"0x%08x",
770 (UINTN)Data32
771 );
772 mInstructionContentOffset += 10;
773
774 return mInstructionContentOffset;
775}
776
786UINTN
788 IN UINT64 Data64
789 )
790{
792 mInstructionString.Content,
793 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
794 mInstructionContentOffset,
795 L"0x%016lx",
796 (UINT64)Data64
797 );
798 mInstructionContentOffset += 18;
799
800 return mInstructionContentOffset;
801}
802
812UINTN
814 IN UINTN Data
815 )
816{
818 mInstructionString.Content,
819 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
820 mInstructionContentOffset,
821 L"%d",
822 (UINTN)Data
823 );
824 mInstructionContentOffset = mInstructionContentOffset + EdbGetBitWidth (Data);
825
826 return mInstructionContentOffset;
827}
828
838UINTN
840 IN UINT64 Data64
841 )
842{
844 mInstructionString.Content,
845 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
846 mInstructionContentOffset,
847 L"%ld",
848 Data64
849 );
850 mInstructionContentOffset = mInstructionContentOffset + EdbGetBitWidth (Data64);
851
852 return mInstructionContentOffset;
853}
854
864UINTN
866 IN UINT8 Data8
867 )
868{
869 BOOLEAN Sign;
870
871 Sign = (BOOLEAN)(Data8 >> 7);
872
874 mInstructionString.Content,
875 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
876 mInstructionContentOffset,
877 L"%s%d",
878 Sign ? L"-" : L"+",
879 (UINTN)(Data8 & 0x7F)
880 );
881 mInstructionContentOffset = mInstructionContentOffset + 1 + EdbGetBitWidth (Data8 & 0x7F);
882
883 return mInstructionContentOffset;
884}
885
895UINTN
897 IN UINT16 Data16
898 )
899{
900 BOOLEAN Sign;
901
902 Sign = (BOOLEAN)(Data16 >> 15);
903
905 mInstructionString.Content,
906 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
907 mInstructionContentOffset,
908 L"%s%d",
909 Sign ? L"-" : L"+",
910 (UINTN)(Data16 & 0x7FFF)
911 );
912 mInstructionContentOffset = mInstructionContentOffset + 1 + EdbGetBitWidth (Data16 & 0x7FFF);
913
914 return mInstructionContentOffset;
915}
916
926UINTN
928 IN UINT32 Data32
929 )
930{
931 BOOLEAN Sign;
932
933 Sign = (BOOLEAN)(Data32 >> 31);
934
936 mInstructionString.Content,
937 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
938 mInstructionContentOffset,
939 L"%s%d",
940 Sign ? L"-" : L"+",
941 (UINTN)(Data32 & 0x7FFFFFFF)
942 );
943 mInstructionContentOffset = mInstructionContentOffset + 1 + EdbGetBitWidth (Data32 & 0x7FFFFFFF);
944
945 return mInstructionContentOffset;
946}
947
957UINTN
959 IN UINT64 Data64
960 )
961{
962 BOOLEAN Sign;
963 INT64 Data64s;
964
965 Sign = (BOOLEAN)RShiftU64 (Data64, 63);
966 Data64s = (INT64)RShiftU64 (LShiftU64 (Data64, 1), 1);
967
969 mInstructionString.Content,
970 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
971 mInstructionContentOffset,
972 L"%s%ld",
973 Sign ? L"-" : L"+",
974 (UINT64)Data64s
975 );
976 mInstructionContentOffset = mInstructionContentOffset + 1 + EdbGetBitWidth (Data64s);
977
978 return mInstructionContentOffset;
979}
980
988UINTN
990 VOID
991 )
992{
994 mInstructionString.Content,
995 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
996 mInstructionContentOffset,
997 L", "
998 );
999 mInstructionContentOffset += 2;
1000
1001 return mInstructionContentOffset;
1002}
1003
1014UINTN
1016 IN UINTN Address
1017 )
1018{
1019 CHAR8 *SymbolStr;
1020
1021 SymbolStr = FindSymbolStr (Address);
1022 if (SymbolStr != NULL) {
1024 mInstructionString.Content,
1025 EDB_INSTRUCTION_CONTENT_MAX_SIZE,
1026 mInstructionContentOffset,
1027 L"[%a]",
1028 SymbolStr
1029 );
1030 return 1;
1031 }
1032
1033 return 0;
1034}
1035
1044VOID
1046 IN EFI_PHYSICAL_ADDRESS InstructionAddress,
1047 IN UINTN InstructionNumber
1048 )
1049{
1050 UINTN LineNumber;
1051 UINTN ByteNumber;
1052 UINTN LineIndex;
1053 UINTN ByteIndex;
1054 CHAR8 *SymbolStr;
1055
1056 if (InstructionNumber == 0) {
1057 return;
1058 }
1059
1060 LineNumber = InstructionNumber / EDB_BYTECODE_NUMBER_IN_LINE;
1061 ByteNumber = InstructionNumber % EDB_BYTECODE_NUMBER_IN_LINE;
1062 if (ByteNumber == 0) {
1063 LineNumber -= 1;
1064 ByteNumber = EDB_BYTECODE_NUMBER_IN_LINE;
1065 }
1066
1067 //
1068 // Print Symbol
1069 //
1070 SymbolStr = FindSymbolStr ((UINTN)InstructionAddress);
1071 if (SymbolStr != NULL) {
1072 EDBPrint (L"[%a]:\n", SymbolStr);
1073 }
1074
1075 for (LineIndex = 0; LineIndex < LineNumber; LineIndex++) {
1076 EDBPrint (EDB_PRINT_ADDRESS_FORMAT, (UINTN)InstructionAddress);
1077 for (ByteIndex = 0; ByteIndex < EDB_BYTECODE_NUMBER_IN_LINE; ByteIndex++) {
1078 EDBPrint (L"%02x ", *(UINT8 *)(UINTN)InstructionAddress);
1079 InstructionAddress += 1;
1080 }
1081
1082 EDBPrint (L"\n");
1083 }
1084
1085 EDBPrint (EDB_PRINT_ADDRESS_FORMAT, (UINTN)InstructionAddress);
1086 for (ByteIndex = 0; ByteIndex < ByteNumber; ByteIndex++) {
1087 EDBPrint (L"%02x ", *(UINT8 *)(UINTN)InstructionAddress);
1088 InstructionAddress += 1;
1089 }
1090
1091 for (ByteIndex = 0; ByteIndex < EDB_BYTECODE_NUMBER_IN_LINE - ByteNumber; ByteIndex++) {
1092 EDBPrint (L" ");
1093 }
1094
1095 return;
1096}
1097
1110 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
1111 IN EFI_SYSTEM_CONTEXT SystemContext
1112 )
1113{
1114 EFI_PHYSICAL_ADDRESS InstructionAddress;
1115 UINTN InstructionNumber;
1116 UINTN InstructionLength;
1117 UINT8 Opcode;
1118 CHAR16 *InstructionString;
1119
1120 // UINTN Result;
1121
1122 InstructionAddress = DebuggerPrivate->InstructionScope;
1123 for (InstructionNumber = 0; InstructionNumber < DebuggerPrivate->InstructionNumber; InstructionNumber++) {
1124 //
1125 // Break each 0x10 instruction
1126 //
1127 if (((InstructionNumber % EFI_DEBUGGER_LINE_NUMBER_IN_PAGE) == 0) &&
1128 (InstructionNumber != 0))
1129 {
1130 if (SetPageBreak ()) {
1131 break;
1132 }
1133 }
1134
1135 Opcode = GET_OPCODE (InstructionAddress);
1136 if ((Opcode < OPCODE_MAX) && (mEdbDisasmInstructionTable[Opcode] != NULL)) {
1137 InstructionLength = mEdbDisasmInstructionTable[Opcode](InstructionAddress, SystemContext, &InstructionString);
1138 if (InstructionLength != 0) {
1139 //
1140 // Print Source
1141 //
1142 // Result = EdbPrintSource ((UINTN)InstructionAddress, FALSE);
1143
1144 if (!DebuggerPrivate->DebuggerSymbolContext.DisplayCodeOnly) {
1145 EdbPrintRaw (InstructionAddress, InstructionLength);
1146 if (InstructionString != NULL) {
1147 EDBPrint (L"%s\n", InstructionString);
1148 } else {
1149 EDBPrint (L"%s\n", L"<Unknown Instruction>");
1150 }
1151 }
1152
1153 EdbPrintSource ((UINTN)InstructionAddress, TRUE);
1154
1155 InstructionAddress += InstructionLength;
1156 } else {
1157 //
1158 // Something wrong with OPCODE
1159 //
1160 EdbPrintRaw (InstructionAddress, EDB_BYTECODE_NUMBER_IN_LINE);
1161 EDBPrint (L"%s\n", L"<Bad Instruction>");
1162 break;
1163 }
1164 } else {
1165 //
1166 // Something wrong with OPCODE
1167 //
1168 EdbPrintRaw (InstructionAddress, EDB_BYTECODE_NUMBER_IN_LINE);
1169 EDBPrint (L"%s\n", L"<Bad Instruction>");
1170 break;
1171 }
1172 }
1173
1174 return EFI_SUCCESS;
1175}
1176
1187UINT64
1189 IN EFI_SYSTEM_CONTEXT SystemContext,
1190 IN UINT8 Index
1191 )
1192{
1193 switch (Index) {
1194 case 0:
1195 return SystemContext.SystemContextEbc->R0;
1196 case 1:
1197 return SystemContext.SystemContextEbc->R1;
1198 case 2:
1199 return SystemContext.SystemContextEbc->R2;
1200 case 3:
1201 return SystemContext.SystemContextEbc->R3;
1202 case 4:
1203 return SystemContext.SystemContextEbc->R4;
1204 case 5:
1205 return SystemContext.SystemContextEbc->R5;
1206 case 6:
1207 return SystemContext.SystemContextEbc->R6;
1208 case 7:
1209 return SystemContext.SystemContextEbc->R7;
1210 default:
1211 ASSERT (FALSE);
1212 break;
1213 }
1214
1215 return 0;
1216}
UINT64 UINTN
UINT64 EFIAPI RShiftU64(IN UINT64 Operand, IN UINTN Count)
Definition: RShiftU64.c:28
UINT64 EFIAPI LShiftU64(IN UINT64 Operand, IN UINTN Count)
Definition: LShiftU64.c:28
UINTN EFIAPI StrLen(IN CONST CHAR16 *String)
Definition: String.c:30
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
UINTN EdbPrintImmData64(IN UINT64 Data)
UINTN EdbPrintRawIndexData16(IN UINT16 Data16)
UINTN EdbPrintIndexData(IN BOOLEAN Sign, IN UINTN NaturalUnits, IN UINTN ConstantUnits)
UINTN EdbPrintData64n(IN UINT64 Data64)
UINTN EdbPrintInstructionName(IN CHAR16 *Name)
VOID EdbSetOffset(IN UINTN InstructionNameOffset, IN UINTN InstructionContentOffset)
UINTN EdbPrintData64s(IN UINT64 Data64)
UINTN EdbPrintData8s(IN UINT8 Data8)
UINTN EdbPrintRegister1(IN UINT8 Operands)
UINTN EdbPrintImmData64n(IN UINT64 Data64)
BOOLEAN EdbGetNaturalIndex16(IN UINT16 Data16, OUT UINTN *NaturalUnits, OUT UINTN *ConstantUnits)
UINTN EdbPrintData16s(IN UINT16 Data16)
VOID EdbPrintRaw(IN EFI_PHYSICAL_ADDRESS InstructionAddress, IN UINTN InstructionNumber)
CHAR16 * EdbPreInstructionString(VOID)
UINTN EdbPrintImmData32(IN UINT32 Data)
UINTN EdbPrintIndexData64(IN BOOLEAN Sign, IN UINT64 NaturalUnits, IN UINT64 ConstantUnits)
UINTN EdbPrintData32s(IN UINT32 Data32)
BOOLEAN EdbGetNaturalIndex32(IN UINT32 Data32, OUT UINTN *NaturalUnits, OUT UINTN *ConstantUnits)
EFI_STATUS EdbShowDisasm(IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate, IN EFI_SYSTEM_CONTEXT SystemContext)
UINTN EdbPrintImmData8(IN UINT8 Data)
UINTN EdbPrintDatan(IN UINTN Data)
UINTN EdbPrintImmData16(IN UINT16 Data)
CHAR16 * EdbPostInstructionString(VOID)
UINTN EdbPrintRawIndexData32(IN UINT32 Data32)
UINTN EdbPrintData8(IN UINT8 Data8)
UINT8 EdbGetBitWidth(IN UINT64 Value)
UINT64 GetRegisterValue(IN EFI_SYSTEM_CONTEXT SystemContext, IN UINT8 Index)
UINTN EdbPrintRawIndexData64(IN UINT64 Data64)
UINTN EdbPrintData16(IN UINT16 Data16)
UINTN EdbPrintDedicatedRegister1(IN UINT8 Operands)
UINTN EdbPrintDedicatedRegister2(IN UINT8 Operands)
UINTN EdbPrintComma(VOID)
UINTN EdbFindAndPrintSymbol(IN UINTN Address)
BOOLEAN EdbGetNaturalIndex64(IN UINT64 Data64, OUT UINT64 *NaturalUnits, OUT UINT64 *ConstantUnits)
UINTN EdbPrintRegister2(IN UINT8 Operands)
UINTN EdbPrintData32(IN UINT32 Data32)
UINTN EdbPrintImmDatan(IN UINTN Data)
UINTN EdbPrintData64(IN UINT64 Data64)
BOOLEAN EFIAPI SetPageBreak(VOID)
Definition: EdbSupportUI.c:605
UINTN EFIAPI EDBPrint(IN CONST CHAR16 *Format,...)
Definition: EdbSupportUI.c:683
UINTN EFIAPI EDBSPrintWithOffset(OUT CHAR16 *Buffer, IN INTN BufferSize, IN UINTN Offset, IN CONST CHAR16 *Format,...)
Definition: EdbSupportUI.c:752
UINTN EdbPrintSource(IN UINTN Address, IN BOOLEAN IsPrint)
Definition: EdbSymbol.c:2086
CHAR8 * FindSymbolStr(IN UINTN Address)
Definition: EdbSymbol.c:1733
#define NULL
Definition: Base.h:319
#define TRUE
Definition: Base.h:301
#define FALSE
Definition: Base.h:307
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
UINT64 EFI_PHYSICAL_ADDRESS
Definition: UefiBaseType.h:50
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
#define EFI_SUCCESS
Definition: UefiBaseType.h:112