Lines Matching refs:Decoder

23 // This layout is parsed by Decoder::dumpPackedEntry.  No unwind bytecode is
37 // describing how to unwind the function (c.f. Decoder::decodeOpcodes).
45 // This layout is parsed by Decoder::dumpUnpackedEntry. Such an entry must
51 // up the bulk of the Decoder.
116 const size_t Decoder::PDataEntrySize = sizeof(RuntimeFunction);
119 const Decoder::RingEntry Decoder::Ring[] = {
120 { 0x80, 0x00, 1, &Decoder::opcode_0xxxxxxx }, // UOP_STACK_FREE (16-bit)
121 { 0xc0, 0x80, 2, &Decoder::opcode_10Lxxxxx }, // UOP_POP (32-bit)
122 { 0xf0, 0xc0, 1, &Decoder::opcode_1100xxxx }, // UOP_STACK_SAVE (16-bit)
123 { 0xf8, 0xd0, 1, &Decoder::opcode_11010Lxx }, // UOP_POP (16-bit)
124 { 0xf8, 0xd8, 1, &Decoder::opcode_11011Lxx }, // UOP_POP (32-bit)
125 { 0xf8, 0xe0, 1, &Decoder::opcode_11100xxx }, // UOP_VPOP (32-bit)
126 { 0xfc, 0xe8, 2, &Decoder::opcode_111010xx }, // UOP_STACK_FREE (32-bit)
127 { 0xfe, 0xec, 2, &Decoder::opcode_1110110L }, // UOP_POP (16-bit)
128 { 0xff, 0xee, 2, &Decoder::opcode_11101110 }, // UOP_MICROSOFT_SPECIFIC (16-bit)
133 { 0xff, 0xef, 2, &Decoder::opcode_11101111 }, // UOP_LDRPC_POSTINC (32-bit)
134 { 0xff, 0xf5, 2, &Decoder::opcode_11110101 }, // UOP_VPOP (32-bit)
135 { 0xff, 0xf6, 2, &Decoder::opcode_11110110 }, // UOP_VPOP (32-bit)
136 { 0xff, 0xf7, 3, &Decoder::opcode_11110111 }, // UOP_STACK_RESTORE (16-bit)
137 { 0xff, 0xf8, 4, &Decoder::opcode_11111000 }, // UOP_STACK_RESTORE (16-bit)
138 { 0xff, 0xf9, 3, &Decoder::opcode_11111001 }, // UOP_STACK_RESTORE (32-bit)
139 { 0xff, 0xfa, 4, &Decoder::opcode_11111010 }, // UOP_STACK_RESTORE (32-bit)
140 { 0xff, 0xfb, 1, &Decoder::opcode_11111011 }, // UOP_NOP (16-bit)
141 { 0xff, 0xfc, 1, &Decoder::opcode_11111100 }, // UOP_NOP (32-bit)
142 { 0xff, 0xfd, 1, &Decoder::opcode_11111101 }, // UOP_NOP (16-bit) / END
143 { 0xff, 0xfe, 1, &Decoder::opcode_11111110 }, // UOP_NOP (32-bit) / END
144 { 0xff, 0xff, 1, &Decoder::opcode_11111111 }, // UOP_END
150 const Decoder::RingEntry Decoder::Ring64[] = {
151 { 0xe0, 0x00, 1, &Decoder::opcode_alloc_s },
152 { 0xe0, 0x20, 1, &Decoder::opcode_save_r19r20_x },
153 { 0xc0, 0x40, 1, &Decoder::opcode_save_fplr },
154 { 0xc0, 0x80, 1, &Decoder::opcode_save_fplr_x },
155 { 0xf8, 0xc0, 2, &Decoder::opcode_alloc_m },
156 { 0xfc, 0xc8, 2, &Decoder::opcode_save_regp },
157 { 0xfc, 0xcc, 2, &Decoder::opcode_save_regp_x },
158 { 0xfc, 0xd0, 2, &Decoder::opcode_save_reg },
159 { 0xfe, 0xd4, 2, &Decoder::opcode_save_reg_x },
160 { 0xfe, 0xd6, 2, &Decoder::opcode_save_lrpair },
161 { 0xfe, 0xd8, 2, &Decoder::opcode_save_fregp },
162 { 0xfe, 0xda, 2, &Decoder::opcode_save_fregp_x },
163 { 0xfe, 0xdc, 2, &Decoder::opcode_save_freg },
164 { 0xff, 0xde, 2, &Decoder::opcode_save_freg_x },
165 { 0xff, 0xe0, 4, &Decoder::opcode_alloc_l },
166 { 0xff, 0xe1, 1, &Decoder::opcode_setfp },
167 { 0xff, 0xe2, 2, &Decoder::opcode_addfp },
168 { 0xff, 0xe3, 1, &Decoder::opcode_nop },
169 { 0xff, 0xe4, 1, &Decoder::opcode_end },
170 { 0xff, 0xe5, 1, &Decoder::opcode_end_c },
173 void Decoder::printRegisters(const std::pair<uint16_t, uint32_t> &RegisterMask) {
212 Decoder::getSectionContaining(const COFFObjectFile &COFF, uint64_t VA) {
223 ErrorOr<object::SymbolRef> Decoder::getSymbol(const COFFObjectFile &COFF,
241 ErrorOr<SymbolRef> Decoder::getRelocatedSymbol(const COFFObjectFile &,
252 bool Decoder::opcode_0xxxxxxx(const uint8_t *OC, unsigned &Offset,
263 bool Decoder::opcode_10Lxxxxx(const uint8_t *OC, unsigned &Offset,
282 bool Decoder::opcode_1100xxxx(const uint8_t *OC, unsigned &Offset,
294 bool Decoder::opcode_11010Lxx(const uint8_t *OC, unsigned &Offset,
311 bool Decoder::opcode_11011Lxx(const uint8_t *OC, unsigned &Offset,
328 bool Decoder::opcode_11100xxx(const uint8_t *OC, unsigned &Offset,
342 bool Decoder::opcode_111010xx(const uint8_t *OC, unsigned &Offset,
355 bool Decoder::opcode_1110110L(const uint8_t *OC, unsigned &Offset,
369 bool Decoder::opcode_11101110(const uint8_t *OC, unsigned &Offset,
385 bool Decoder::opcode_11101111(const uint8_t *OC, unsigned &Offset,
401 bool Decoder::opcode_11110101(const uint8_t *OC, unsigned &Offset,
416 bool Decoder::opcode_11110110(const uint8_t *OC, unsigned &Offset,
431 bool Decoder::opcode_11110111(const uint8_t *OC, unsigned &Offset,
444 bool Decoder::opcode_11111000(const uint8_t *OC, unsigned &Offset,
459 bool Decoder::opcode_11111001(const uint8_t *OC, unsigned &Offset,
472 bool Decoder::opcode_11111010(const uint8_t *OC, unsigned &Offset,
487 bool Decoder::opcode_11111011(const uint8_t *OC, unsigned &Offset,
494 bool Decoder::opcode_11111100(const uint8_t *OC, unsigned &Offset,
501 bool Decoder::opcode_11111101(const uint8_t *OC, unsigned &Offset,
508 bool Decoder::opcode_11111110(const uint8_t *OC, unsigned &Offset,
515 bool Decoder::opcode_11111111(const uint8_t *OC, unsigned &Offset,
522 bool Decoder::opcode_alloc_s(const uint8_t *OC, unsigned &Offset,
532 bool Decoder::opcode_save_r19r20_x(const uint8_t *OC, unsigned &Offset,
545 bool Decoder::opcode_save_fplr(const uint8_t *OC, unsigned &Offset,
555 bool Decoder::opcode_save_fplr_x(const uint8_t *OC, unsigned &Offset,
568 bool Decoder::opcode_alloc_m(const uint8_t *OC, unsigned &Offset,
581 bool Decoder::opcode_save_regp(const uint8_t *OC, unsigned &Offset,
596 bool Decoder::opcode_save_regp_x(const uint8_t *OC, unsigned &Offset,
617 bool Decoder::opcode_save_reg(const uint8_t *OC, unsigned &Offset,
632 bool Decoder::opcode_save_reg_x(const uint8_t *OC, unsigned &Offset,
649 bool Decoder::opcode_save_lrpair(const uint8_t *OC, unsigned &Offset,
665 bool Decoder::opcode_save_fregp(const uint8_t *OC, unsigned &Offset,
680 bool Decoder::opcode_save_fregp_x(const uint8_t *OC, unsigned &Offset,
699 bool Decoder::opcode_save_freg(const uint8_t *OC, unsigned &Offset,
714 bool Decoder::opcode_save_freg_x(const uint8_t *OC, unsigned &Offset,
730 bool Decoder::opcode_alloc_l(const uint8_t *OC, unsigned &Offset,
743 bool Decoder::opcode_setfp(const uint8_t *OC, unsigned &Offset, unsigned Length,
750 bool Decoder::opcode_addfp(const uint8_t *OC, unsigned &Offset, unsigned Length,
759 bool Decoder::opcode_nop(const uint8_t *OC, unsigned &Offset, unsigned Length,
766 bool Decoder::opcode_end(const uint8_t *OC, unsigned &Offset, unsigned Length,
773 bool Decoder::opcode_end_c(const uint8_t *OC, unsigned &Offset, unsigned Length,
780 void Decoder::decodeOpcodes(ArrayRef<uint8_t> Opcodes, unsigned Offset,
810 bool Decoder::dumpXDataRecord(const COFFObjectFile &COFF,
921 bool Decoder::dumpUnpackedEntry(const COFFObjectFile &COFF,
1013 bool Decoder::dumpPackedEntry(const object::COFFObjectFile &COFF,
1064 bool Decoder::dumpProcedureDataEntry(const COFFObjectFile &COFF,
1082 void Decoder::dumpProcedureData(const COFFObjectFile &COFF,
1098 Error Decoder::dumpProcedureData(const COFFObjectFile &COFF) {