| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/disassembler.h" | 5 #include "vm/disassembler.h" |
| 6 | 6 |
| 7 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM. | 7 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM. |
| 8 #if defined(TARGET_ARCH_ARM) | 8 #if defined(TARGET_ARCH_ARM) |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 | 10 |
| (...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 | 548 |
| 549 | 549 |
| 550 void ARMDecoder::DecodeType01(Instr* instr) { | 550 void ARMDecoder::DecodeType01(Instr* instr) { |
| 551 if (!instr->IsDataProcessing()) { | 551 if (!instr->IsDataProcessing()) { |
| 552 // miscellaneous, multiply, sync primitives, extra loads and stores. | 552 // miscellaneous, multiply, sync primitives, extra loads and stores. |
| 553 if (instr->IsMiscellaneous()) { | 553 if (instr->IsMiscellaneous()) { |
| 554 switch (instr->Bits(4, 3)) { | 554 switch (instr->Bits(4, 3)) { |
| 555 case 1: { | 555 case 1: { |
| 556 if (instr->Bits(21, 2) == 0x3) { | 556 if (instr->Bits(21, 2) == 0x3) { |
| 557 Format(instr, "clz'cond 'rd, 'rm"); | 557 Format(instr, "clz'cond 'rd, 'rm"); |
| 558 } else if (instr->Bits(21, 2) == 0x1) { |
| 559 Format(instr, "bx'cond 'rm"); |
| 558 } else { | 560 } else { |
| 559 Unknown(instr); | 561 Unknown(instr); |
| 560 } | 562 } |
| 561 break; | 563 break; |
| 562 } | 564 } |
| 563 case 3: { | 565 case 3: { |
| 564 if (instr->Bits(21, 2) == 0x1) { | 566 if (instr->Bits(21, 2) == 0x1) { |
| 565 Format(instr, "blx'cond 'rm"); | 567 Format(instr, "blx'cond 'rm"); |
| 566 } else { | 568 } else { |
| 567 // Could be inlined constant. | 569 // Could be inlined constant. |
| 568 Unknown(instr); | 570 Unknown(instr); |
| 569 } | 571 } |
| 570 break; | 572 break; |
| 571 } | 573 } |
| 572 case 7: { | 574 case 7: { |
| 573 if (instr->Bits(21, 2) == 0x1) { | 575 if (instr->Bits(21, 2) == 0x1) { |
| 574 Format(instr, "bkpt #'imm12_4"); | 576 Format(instr, "bkpt'cond #'imm12_4"); |
| 575 } else { | 577 } else { |
| 576 // Format(instr, "smc'cond"); | 578 // Format(instr, "smc'cond"); |
| 577 Unknown(instr); // Not used. | 579 Unknown(instr); // Not used. |
| 578 } | 580 } |
| 579 break; | 581 break; |
| 580 } | 582 } |
| 581 default: { | 583 default: { |
| 582 Unknown(instr); // Not used. | 584 Unknown(instr); // Not used. |
| 583 break; | 585 break; |
| 584 } | 586 } |
| (...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1243 human_buffer, | 1245 human_buffer, |
| 1244 sizeof(human_buffer), | 1246 sizeof(human_buffer), |
| 1245 pc); | 1247 pc); |
| 1246 pc += instruction_length; | 1248 pc += instruction_length; |
| 1247 } | 1249 } |
| 1248 } | 1250 } |
| 1249 | 1251 |
| 1250 } // namespace dart | 1252 } // namespace dart |
| 1251 | 1253 |
| 1252 #endif // defined TARGET_ARCH_ARM | 1254 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |