OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // A Disassembler object is used to disassemble a block of code instruction by | 5 // A Disassembler object is used to disassemble a block of code instruction by |
6 // instruction. The default implementation of the NameConverter object can be | 6 // instruction. The default implementation of the NameConverter object can be |
7 // overriden to modify register names or to do symbol lookup on addresses. | 7 // overriden to modify register names or to do symbol lookup on addresses. |
8 // | 8 // |
9 // The example below will disassemble a block of code and print it to stdout. | 9 // The example below will disassemble a block of code and print it to stdout. |
10 // | 10 // |
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1181 case 2: | 1181 case 2: |
1182 Format(instr, "uxtah'cond 'rd, 'rn, 'rm, ror #16"); | 1182 Format(instr, "uxtah'cond 'rd, 'rn, 'rm, ror #16"); |
1183 break; | 1183 break; |
1184 case 3: | 1184 case 3: |
1185 Format(instr, "uxtah'cond 'rd, 'rn, 'rm, ror #24"); | 1185 Format(instr, "uxtah'cond 'rd, 'rn, 'rm, ror #24"); |
1186 break; | 1186 break; |
1187 } | 1187 } |
1188 } | 1188 } |
1189 } | 1189 } |
1190 } else { | 1190 } else { |
1191 UNREACHABLE(); | 1191 // PU == 0b01, BW == 0b11, Bits(9, 6) != 0b0001 |
| 1192 if ((instr->Bits(20, 16) == 0x1f) && |
| 1193 (instr->Bits(11, 4) == 0xf3)) { |
| 1194 Format(instr, "rbit'cond 'rd, 'rm"); |
| 1195 } else { |
| 1196 UNREACHABLE(); |
| 1197 } |
1192 } | 1198 } |
1193 break; | 1199 break; |
1194 } | 1200 } |
1195 } | 1201 } |
1196 } | 1202 } |
1197 break; | 1203 break; |
1198 } | 1204 } |
1199 case db_x: { | 1205 case db_x: { |
1200 if (instr->Bits(22, 20) == 0x5) { | 1206 if (instr->Bits(22, 20) == 0x5) { |
1201 if (instr->Bits(7, 4) == 0x1) { | 1207 if (instr->Bits(7, 4) == 0x1) { |
(...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1978 v8::internal::PrintF( | 1984 v8::internal::PrintF( |
1979 f, "%p %08x %s\n", | 1985 f, "%p %08x %s\n", |
1980 prev_pc, *reinterpret_cast<int32_t*>(prev_pc), buffer.start()); | 1986 prev_pc, *reinterpret_cast<int32_t*>(prev_pc), buffer.start()); |
1981 } | 1987 } |
1982 } | 1988 } |
1983 | 1989 |
1984 | 1990 |
1985 } // namespace disasm | 1991 } // namespace disasm |
1986 | 1992 |
1987 #endif // V8_TARGET_ARCH_ARM | 1993 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |