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 #include <assert.h> | 5 #include <assert.h> |
6 #include <stdarg.h> | 6 #include <stdarg.h> |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 | 8 |
9 #if V8_TARGET_ARCH_IA32 | 9 #if V8_TARGET_ARCH_IA32 |
10 | 10 |
(...skipping 1404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1415 AppendToBuffer("%s", f0mnem); | 1415 AppendToBuffer("%s", f0mnem); |
1416 data += 2; | 1416 data += 2; |
1417 } else if (f0byte == 0x28) { | 1417 } else if (f0byte == 0x28) { |
1418 data += 2; | 1418 data += 2; |
1419 int mod, regop, rm; | 1419 int mod, regop, rm; |
1420 get_modrm(*data, &mod, ®op, &rm); | 1420 get_modrm(*data, &mod, ®op, &rm); |
1421 AppendToBuffer("movaps %s,%s", | 1421 AppendToBuffer("movaps %s,%s", |
1422 NameOfXMMRegister(regop), | 1422 NameOfXMMRegister(regop), |
1423 NameOfXMMRegister(rm)); | 1423 NameOfXMMRegister(rm)); |
1424 data++; | 1424 data++; |
| 1425 } else if (f0byte == 0x10 || f0byte == 0x11) { |
| 1426 data += 2; |
| 1427 // movups xmm, xmm/m128 |
| 1428 // movups xmm/m128, xmm |
| 1429 int mod, regop, rm; |
| 1430 get_modrm(*data, &mod, ®op, &rm); |
| 1431 AppendToBuffer("movups "); |
| 1432 if (f0byte == 0x11) { |
| 1433 data += PrintRightXMMOperand(data); |
| 1434 AppendToBuffer(",%s", NameOfXMMRegister(regop)); |
| 1435 } else { |
| 1436 AppendToBuffer("%s,", NameOfXMMRegister(regop)); |
| 1437 data += PrintRightXMMOperand(data); |
| 1438 } |
1425 } else if (f0byte == 0x2e) { | 1439 } else if (f0byte == 0x2e) { |
1426 data += 2; | 1440 data += 2; |
1427 int mod, regop, rm; | 1441 int mod, regop, rm; |
1428 get_modrm(*data, &mod, ®op, &rm); | 1442 get_modrm(*data, &mod, ®op, &rm); |
1429 AppendToBuffer("ucomiss %s,", NameOfXMMRegister(regop)); | 1443 AppendToBuffer("ucomiss %s,", NameOfXMMRegister(regop)); |
1430 data += PrintRightXMMOperand(data); | 1444 data += PrintRightXMMOperand(data); |
1431 } else if (f0byte >= 0x53 && f0byte <= 0x5F) { | 1445 } else if (f0byte >= 0x53 && f0byte <= 0x5F) { |
1432 const char* const pseudo_op[] = { | 1446 const char* const pseudo_op[] = { |
1433 "rcpps", | 1447 "rcpps", |
1434 "andps", | 1448 "andps", |
(...skipping 886 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2321 fprintf(f, " "); | 2335 fprintf(f, " "); |
2322 } | 2336 } |
2323 fprintf(f, " %s\n", buffer.start()); | 2337 fprintf(f, " %s\n", buffer.start()); |
2324 } | 2338 } |
2325 } | 2339 } |
2326 | 2340 |
2327 | 2341 |
2328 } // namespace disasm | 2342 } // namespace disasm |
2329 | 2343 |
2330 #endif // V8_TARGET_ARCH_IA32 | 2344 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |