| OLD | NEW |
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 | 38 |
| 39 // Only build the simulator if not compiling for real ARM hardware. | 39 // Only build the simulator if not compiling for real ARM hardware. |
| 40 namespace assembler { | 40 namespace assembler { |
| 41 namespace arm { | 41 namespace arm { |
| 42 | 42 |
| 43 using ::v8::internal::Object; | 43 using ::v8::internal::Object; |
| 44 using ::v8::internal::PrintF; | 44 using ::v8::internal::PrintF; |
| 45 using ::v8::internal::OS; | 45 using ::v8::internal::OS; |
| 46 using ::v8::internal::ReadLine; | 46 using ::v8::internal::ReadLine; |
| 47 using ::v8::internal::DeleteArray; | 47 using ::v8::internal::DeleteArray; |
| 48 using ::v8::internal::RotateRight; |
| 48 | 49 |
| 49 // This macro provides a platform independent use of sscanf. The reason for | 50 // This macro provides a platform independent use of sscanf. The reason for |
| 50 // SScanF not being implemented in a platform independent was through | 51 // SScanF not being implemented in a platform independent was through |
| 51 // ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time | 52 // ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time |
| 52 // Library does not provide vsscanf. | 53 // Library does not provide vsscanf. |
| 53 #define SScanF sscanf // NOLINT | 54 #define SScanF sscanf // NOLINT |
| 54 | 55 |
| 55 // The Debugger class is used by the simulator while debugging simulated ARM | 56 // The Debugger class is used by the simulator while debugging simulated ARM |
| 56 // code. | 57 // code. |
| 57 class Debugger { | 58 class Debugger { |
| (...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 810 uint32_t uresult = static_cast<uint32_t>(result); | 811 uint32_t uresult = static_cast<uint32_t>(result); |
| 811 uresult >>= (shift_amount - 1); | 812 uresult >>= (shift_amount - 1); |
| 812 *carry_out = (uresult & 1) == 1; | 813 *carry_out = (uresult & 1) == 1; |
| 813 uresult >>= 1; | 814 uresult >>= 1; |
| 814 result = static_cast<int32_t>(uresult); | 815 result = static_cast<int32_t>(uresult); |
| 815 } | 816 } |
| 816 break; | 817 break; |
| 817 } | 818 } |
| 818 | 819 |
| 819 case ROR: { | 820 case ROR: { |
| 820 UNIMPLEMENTED(); | 821 ASSERT(shift_amount > 0); |
| 822 uint32_t uresult = static_cast<uint32_t>(result); |
| 823 uresult = RotateRight(uresult, shift_amount - 1); |
| 824 *carry_out = (uresult & 1) == 1; |
| 825 uresult = RotateRight(uresult, 1); |
| 826 result = static_cast<int32_t>(uresult); |
| 821 break; | 827 break; |
| 822 } | 828 } |
| 823 | 829 |
| 824 default: { | 830 default: { |
| 825 UNREACHABLE(); | 831 UNREACHABLE(); |
| 826 break; | 832 break; |
| 827 } | 833 } |
| 828 } | 834 } |
| 829 } else { | 835 } else { |
| 830 // by register | 836 // by register |
| (...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1813 set_register(r10, r10_val); | 1819 set_register(r10, r10_val); |
| 1814 set_register(r11, r11_val); | 1820 set_register(r11, r11_val); |
| 1815 | 1821 |
| 1816 int result = get_register(r0); | 1822 int result = get_register(r0); |
| 1817 return reinterpret_cast<Object*>(result); | 1823 return reinterpret_cast<Object*>(result); |
| 1818 } | 1824 } |
| 1819 | 1825 |
| 1820 } } // namespace assembler::arm | 1826 } } // namespace assembler::arm |
| 1821 | 1827 |
| 1822 #endif // !defined(__arm__) | 1828 #endif // !defined(__arm__) |
| OLD | NEW |