src/cpu/mips/vm/disassembler_mips.cpp

changeset 315
8ac5b6ff8466
parent 301
d585b6706dc2
child 335
e6f2f90635ab
equal deleted inserted replaced
314:5682475ccb5d 315:8ac5b6ff8466
316 316
317 case Assembler::special_op: { 317 case Assembler::special_op: {
318 special = Assembler::special(insn); 318 special = Assembler::special(insn);
319 switch(special) { 319 switch(special) {
320 case Assembler::sll_op: 320 case Assembler::sll_op:
321 PRINT_ORRS(Assembler::special_name[special]);
322 break;
321 case Assembler::srl_op: 323 case Assembler::srl_op:
324 if (insn & (1 << 21)) {
325 PRINT_ORRS("rotr");
326 } else {
327 PRINT_ORRS(Assembler::special_name[special]);
328 }
329 break;
322 case Assembler::sra_op: 330 case Assembler::sra_op:
331 PRINT_ORRS(Assembler::special_name[special]);
332 break;
323 case Assembler::dsll_op: 333 case Assembler::dsll_op:
334 PRINT_ORRS(Assembler::special_name[special]);
335 break;
324 case Assembler::dsrl_op: 336 case Assembler::dsrl_op:
337 if (insn & (1 << 21)) {
338 PRINT_ORRS("drotr");
339 } else {
340 PRINT_ORRS(Assembler::special_name[special]);
341 }
342 break;
325 case Assembler::dsra_op: 343 case Assembler::dsra_op:
344 PRINT_ORRS(Assembler::special_name[special]);
345 break;
326 case Assembler::dsll32_op: 346 case Assembler::dsll32_op:
347 PRINT_ORRS(Assembler::special_name[special]);
348 break;
327 case Assembler::dsrl32_op: 349 case Assembler::dsrl32_op:
350 if (insn & (1 << 21)) {
351 PRINT_ORRS("drotr32");
352 } else {
353 PRINT_ORRS(Assembler::special_name[special]);
354 }
355 break;
328 case Assembler::dsra32_op: 356 case Assembler::dsra32_op:
329 PRINT_ORRS(Assembler::special_name[special]); 357 PRINT_ORRS(Assembler::special_name[special]);
330 break; 358 break;
331 359
332 case Assembler::movci_op: 360 case Assembler::movci_op:
337 env->print("movf %s, %s", as_Register(Assembler::rd(insn))->name(), as_Register(Assembler::rs(insn))->name()); 365 env->print("movf %s, %s", as_Register(Assembler::rd(insn))->name(), as_Register(Assembler::rs(insn))->name());
338 } 366 }
339 break; 367 break;
340 368
341 case Assembler::sllv_op: 369 case Assembler::sllv_op:
370 PRINT_ORRR_2(Assembler::special_name[special]);
371 break;
342 case Assembler::srlv_op: 372 case Assembler::srlv_op:
373 if (insn & (1 << 6)) {
374 PRINT_ORRR_2("rotrv");
375 } else {
376 PRINT_ORRR_2(Assembler::special_name[special]);
377 }
378 break;
343 case Assembler::srav_op: 379 case Assembler::srav_op:
380 PRINT_ORRR_2(Assembler::special_name[special]);
381 break;
344 case Assembler::dsllv_op: 382 case Assembler::dsllv_op:
383 PRINT_ORRR_2(Assembler::special_name[special]);
384 break;
345 case Assembler::dsrlv_op: 385 case Assembler::dsrlv_op:
386 if (insn & (1 << 6)) {
387 PRINT_ORRR_2("drotrv");
388 } else {
389 PRINT_ORRR_2(Assembler::special_name[special]);
390 }
391 break;
346 case Assembler::dsrav_op: 392 case Assembler::dsrav_op:
347 PRINT_ORRR_2(Assembler::special_name[special]); 393 PRINT_ORRR_2(Assembler::special_name[special]);
348 break; 394 break;
349 395
350 case Assembler::jr_op: 396 case Assembler::jr_op:

mercurial