OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 718 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 break; | 729 break; |
730 case LTGR: | 730 case LTGR: |
731 Format(instr, "ltgr\t'r5,'r6"); | 731 Format(instr, "ltgr\t'r5,'r6"); |
732 break; | 732 break; |
733 case LTDBR: | 733 case LTDBR: |
734 Format(instr, "ltdbr\t'f5,'f6"); | 734 Format(instr, "ltdbr\t'f5,'f6"); |
735 break; | 735 break; |
736 case LTEBR: | 736 case LTEBR: |
737 Format(instr, "ltebr\t'f5,'f6"); | 737 Format(instr, "ltebr\t'f5,'f6"); |
738 break; | 738 break; |
| 739 case LRVR: |
| 740 Format(instr, "lrvr\t'r5,'r6"); |
| 741 break; |
| 742 case LRVGR: |
| 743 Format(instr, "lrvgr\t'r5,'r6"); |
| 744 break; |
739 case LGR: | 745 case LGR: |
740 Format(instr, "lgr\t'r5,'r6"); | 746 Format(instr, "lgr\t'r5,'r6"); |
741 break; | 747 break; |
742 case LGDR: | 748 case LGDR: |
743 Format(instr, "lgdr\t'r5,'f6"); | 749 Format(instr, "lgdr\t'r5,'f6"); |
744 break; | 750 break; |
745 case LGFR: | 751 case LGFR: |
746 Format(instr, "lgfr\t'r5,'r6"); | 752 Format(instr, "lgfr\t'r5,'r6"); |
747 break; | 753 break; |
748 case LTGFR: | 754 case LTGFR: |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1189 break; | 1195 break; |
1190 case XG: | 1196 case XG: |
1191 Format(instr, "xg\t'r1,'d2('r2d,'r3)"); | 1197 Format(instr, "xg\t'r1,'d2('r2d,'r3)"); |
1192 break; | 1198 break; |
1193 case CG: | 1199 case CG: |
1194 Format(instr, "cg\t'r1,'d2('r2d,'r3)"); | 1200 Format(instr, "cg\t'r1,'d2('r2d,'r3)"); |
1195 break; | 1201 break; |
1196 case LB: | 1202 case LB: |
1197 Format(instr, "lb\t'r1,'d2('r2d,'r3)"); | 1203 Format(instr, "lb\t'r1,'d2('r2d,'r3)"); |
1198 break; | 1204 break; |
| 1205 case LRVH: |
| 1206 Format(instr, "lrvh\t'r1,'d2('r2d,'r3)"); |
| 1207 break; |
| 1208 case LRV: |
| 1209 Format(instr, "lrv\t'r1,'d2('r2d,'r3)"); |
| 1210 break; |
| 1211 case LRVG: |
| 1212 Format(instr, "lrvg\t'r1,'d2('r2d,'r3)"); |
| 1213 break; |
1199 case LG: | 1214 case LG: |
1200 Format(instr, "lg\t'r1,'d2('r2d,'r3)"); | 1215 Format(instr, "lg\t'r1,'d2('r2d,'r3)"); |
1201 break; | 1216 break; |
1202 case LGF: | 1217 case LGF: |
1203 Format(instr, "lgf\t'r1,'d2('r2d,'r3)"); | 1218 Format(instr, "lgf\t'r1,'d2('r2d,'r3)"); |
1204 break; | 1219 break; |
1205 case LLGF: | 1220 case LLGF: |
1206 Format(instr, "llgf\t'r1,'d2('r2d,'r3)"); | 1221 Format(instr, "llgf\t'r1,'d2('r2d,'r3)"); |
1207 break; | 1222 break; |
1208 case LY: | 1223 case LY: |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1261 break; | 1276 break; |
1262 case CLG: | 1277 case CLG: |
1263 Format(instr, "clg\t'r1,'d2('r2d,'r3)"); | 1278 Format(instr, "clg\t'r1,'d2('r2d,'r3)"); |
1264 break; | 1279 break; |
1265 case BCTG: | 1280 case BCTG: |
1266 Format(instr, "bctg\t'r1,'d2('r2d,'r3)"); | 1281 Format(instr, "bctg\t'r1,'d2('r2d,'r3)"); |
1267 break; | 1282 break; |
1268 case STY: | 1283 case STY: |
1269 Format(instr, "sty\t'r1,'d2('r2d,'r3)"); | 1284 Format(instr, "sty\t'r1,'d2('r2d,'r3)"); |
1270 break; | 1285 break; |
| 1286 case STRVH: |
| 1287 Format(instr, "strvh\t'r1,'d2('r2d,'r3)"); |
| 1288 break; |
| 1289 case STRV: |
| 1290 Format(instr, "strv\t'r1,'d2('r2d,'r3)"); |
| 1291 break; |
| 1292 case STRVG: |
| 1293 Format(instr, "strvg\t'r1,'d2('r2d,'r3)"); |
| 1294 break; |
1271 case STG: | 1295 case STG: |
1272 Format(instr, "stg\t'r1,'d2('r2d,'r3)"); | 1296 Format(instr, "stg\t'r1,'d2('r2d,'r3)"); |
1273 break; | 1297 break; |
1274 case ICY: | 1298 case ICY: |
1275 Format(instr, "icy\t'r1,'d2('r2d,'r3)"); | 1299 Format(instr, "icy\t'r1,'d2('r2d,'r3)"); |
1276 break; | 1300 break; |
1277 case MVC: | 1301 case MVC: |
1278 Format(instr, "mvc\t'd3('i8,'r3),'d4('r7)"); | 1302 Format(instr, "mvc\t'd3('i8,'r3),'d4('r7)"); |
1279 break; | 1303 break; |
1280 case MVHI: | 1304 case MVHI: |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1423 byte* prev_pc = pc; | 1447 byte* prev_pc = pc; |
1424 pc += d.InstructionDecode(buffer, pc); | 1448 pc += d.InstructionDecode(buffer, pc); |
1425 v8::internal::PrintF(f, "%p %08x %s\n", static_cast<void*>(prev_pc), | 1449 v8::internal::PrintF(f, "%p %08x %s\n", static_cast<void*>(prev_pc), |
1426 *reinterpret_cast<int32_t*>(prev_pc), buffer.start()); | 1450 *reinterpret_cast<int32_t*>(prev_pc), buffer.start()); |
1427 } | 1451 } |
1428 } | 1452 } |
1429 | 1453 |
1430 } // namespace disasm | 1454 } // namespace disasm |
1431 | 1455 |
1432 #endif // V8_TARGET_ARCH_S390 | 1456 #endif // V8_TARGET_ARCH_S390 |
OLD | NEW |