Changeset 66813 in vbox for trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
- Timestamp:
- May 5, 2017 7:01:33 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
r66812 r66813 95 95 BS3CG1OPLOC_MEM, 96 96 BS3CG1OPLOC_MEM_RW, 97 BS3CG1OPLOC_MEM_WO, 97 98 BS3CG1OPLOC_END 98 99 } BS3CG1OPLOC; … … 197 198 * - BS3CG1OPLOC_MEM: offset should be subtracted from &pbDataPg[_4K]. 198 199 * - BS3CG1OPLOC_MEM_RW: offset should be subtracted from &pbDataPg[_4K]. 200 * - BS3CG1OPLOC_MEM_RO: offset should be subtracted from &pbDataPg[_4K]. 199 201 * - BS3CG1OPLOC_CTX: not used (use idxField instead). 200 202 */ … … 1386 1388 1387 1389 1388 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Gv_Ev__OR__BS3CG1ENC_MODRM_Ev_Gv(PBS3CG1STATE pThis, unsigned iEncoding) 1390 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Gv_Ev__OR__BS3CG1ENC_MODRM_Ev_Gv(PBS3CG1STATE pThis, 1391 unsigned iEncoding) 1389 1392 { 1390 1393 unsigned off; … … 1404 1407 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1405 1408 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, X86_GREG_xBP, cbOp, 0, 1406 pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_ RW);1409 pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_WO); 1407 1410 } 1408 1411 else if (iEncoding == 2 && (g_uBs3CpuDetected & BS3CPU_TYPE_MASK) >= BS3CPU_80386) … … 1423 1426 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 1)); 1424 1427 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, X86_GREG_xSI, cbOp, 0, 1425 pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_ RW);1428 pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_WO); 1426 1429 } 1427 1430 else if (iEncoding == 4) … … 1432 1435 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 1)); 1433 1436 off = Bs3Cfg1EncodeMemMod0Disp(pThis, true, off, X86_GREG_xDI, cbOp, 0, 1434 pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_ RW);1437 pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_WO); 1435 1438 } 1436 1439 else if (iEncoding == 5) … … 1442 1445 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 2)); 1443 1446 off = Bs3Cfg1EncodeMemMod0Disp(pThis, true, off, X86_GREG_xSI, cbOp, 0, 1444 pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_ RW);1447 pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_WO); 1445 1448 } 1446 1449 else if (iEncoding == 6 && BS3_MODE_IS_64BIT_CODE(pThis->bMode)) … … 1465 1468 1466 1469 1467 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_ Vss(PBS3CG1STATE pThis, unsigned iEncoding)1470 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_WO_Vss(PBS3CG1STATE pThis, unsigned iEncoding) 1468 1471 { 1469 1472 unsigned off; … … 1479 1482 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_DW0; 1480 1483 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1481 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 4, 0, BS3CG1OPLOC_MEM_ RW);1484 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 4, 0, BS3CG1OPLOC_MEM_WO); 1482 1485 } 1483 1486 else if (iEncoding == 2) … … 1485 1488 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_DW0; 1486 1489 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1487 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 4, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_ RW);1490 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 4, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO); 1488 1491 } 1489 1492 else … … 1494 1497 1495 1498 1496 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_ Vsd(PBS3CG1STATE pThis, unsigned iEncoding)1499 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_WO_Vsd(PBS3CG1STATE pThis, unsigned iEncoding) 1497 1500 { 1498 1501 unsigned off; … … 1508 1511 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_LO; 1509 1512 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1510 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_ RW);1513 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_WO); 1511 1514 } 1512 1515 else if (iEncoding == 2) … … 1514 1517 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_LO; 1515 1518 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1516 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_ RW);1519 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO); 1517 1520 } 1518 1521 else … … 1523 1526 1524 1527 1525 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_ Vps__OR__BS3CG1ENC_MODRM_Wpd_Vpd(PBS3CG1STATE pThis, unsigned iEncoding)1528 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_WO_Vps__OR__BS3CG1ENC_MODRM_Wpd_WO_Vpd(PBS3CG1STATE pThis, unsigned iEncoding) 1526 1529 { 1527 1530 unsigned off; … … 1537 1540 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2; 1538 1541 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1539 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_ RW);1542 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO); 1540 1543 } 1541 1544 else if (iEncoding == 2) … … 1543 1546 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3; 1544 1547 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1545 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_ RW);1548 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO); 1546 1549 if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType)) 1547 1550 pThis->bAlignmentXcpt = X86_XCPT_GP; … … 1554 1557 1555 1558 1556 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_ Vq(PBS3CG1STATE pThis, unsigned iEncoding)1559 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_WO_Vq(PBS3CG1STATE pThis, unsigned iEncoding) 1557 1560 { 1558 1561 unsigned off; … … 1568 1571 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_LO; 1569 1572 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1570 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_ RW);1573 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_WO); 1571 1574 } 1572 1575 else if (iEncoding == 2) … … 1574 1577 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_LO; 1575 1578 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1576 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_ RW);1579 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO); 1577 1580 } 1578 1581 else … … 1631 1634 1632 1635 1633 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_ Mq(PBS3CG1STATE pThis, unsigned iEncoding)1636 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_WO_Mq(PBS3CG1STATE pThis, unsigned iEncoding) 1634 1637 { 1635 1638 unsigned off; … … 1653 1656 1654 1657 1655 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_ Uq(PBS3CG1STATE pThis, unsigned iEncoding)1658 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_WO_Uq(PBS3CG1STATE pThis, unsigned iEncoding) 1656 1659 { 1657 1660 unsigned off; … … 1677 1680 1678 1681 1679 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_ Mq(PBS3CG1STATE pThis, unsigned iEncoding)1682 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_WO_Mq(PBS3CG1STATE pThis, unsigned iEncoding) 1680 1683 { 1681 1684 unsigned off; … … 1730 1733 1731 1734 1732 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_W ps__OR__BS3CG1ENC_MODRM_Vpd_Wpd(PBS3CG1STATE pThis,1735 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_WO_Wps__OR__BS3CG1ENC_MODRM_Vpd_WO_Wpd(PBS3CG1STATE pThis, 1733 1736 unsigned iEncoding) 1734 1737 { … … 1762 1765 1763 1766 1764 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_W ss(PBS3CG1STATE pThis, unsigned iEncoding)1767 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_WO_Wss(PBS3CG1STATE pThis, unsigned iEncoding) 1765 1768 { 1766 1769 unsigned off; … … 1791 1794 1792 1795 1793 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_W sd__OR__MODRM_VqZxReg_Wq(PBS3CG1STATE pThis,1796 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd__OR__MODRM_VqZxReg_WO_Wq(PBS3CG1STATE pThis, 1794 1797 unsigned iEncoding) 1795 1798 { … … 1930 1933 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 1931 1934 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 1932 4, 0, BS3CG1OPLOC_MEM_ RW);1935 4, 0, BS3CG1OPLOC_MEM_WO); 1933 1936 } 1934 1937 else … … 1939 1942 1940 1943 1941 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_Md WO(PBS3CG1STATE pThis, unsigned iEncoding)1944 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_Md_WO(PBS3CG1STATE pThis, unsigned iEncoding) 1942 1945 { 1943 1946 unsigned off; … … 1949 1952 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 1950 1953 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 1951 4, 0, BS3CG1OPLOC_MEM_ RW);1954 4, 0, BS3CG1OPLOC_MEM_WO); 1952 1955 } 1953 1956 else if (iEncoding == 1) … … 1957 1960 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 1958 1961 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 1959 4, 0, BS3CG1OPLOC_MEM_ RW);1962 4, 0, BS3CG1OPLOC_MEM_WO); 1960 1963 } 1961 1964 else if (iEncoding == 2) … … 1965 1968 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 1966 1969 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 1967 4, 0, BS3CG1OPLOC_MEM_ RW);1970 4, 0, BS3CG1OPLOC_MEM_WO); 1968 1971 pThis->fInvalidEncoding = true; 1969 1972 } … … 1974 1977 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 1975 1978 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 1976 4, 0, BS3CG1OPLOC_MEM_ RW);1979 4, 0, BS3CG1OPLOC_MEM_WO); 1977 1980 pThis->fInvalidEncoding = true; 1978 1981 } … … 1984 1987 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 1985 1988 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 1986 4, 0, BS3CG1OPLOC_MEM_ RW);1989 4, 0, BS3CG1OPLOC_MEM_WO); 1987 1990 pThis->fInvalidEncoding = true; 1988 1991 } … … 1994 1997 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 1995 1998 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 1996 4, 0, BS3CG1OPLOC_MEM_ RW);1999 4, 0, BS3CG1OPLOC_MEM_WO); 1997 2000 pThis->fInvalidEncoding = true; 1998 2001 } … … 2004 2007 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2005 2008 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 2006 4, 0, BS3CG1OPLOC_MEM_ RW);2009 4, 0, BS3CG1OPLOC_MEM_WO); 2007 2010 pThis->fInvalidEncoding = true; 2008 2011 } … … 2013 2016 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2014 2017 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 2015 4, 0, BS3CG1OPLOC_MEM_ RW);2018 4, 0, BS3CG1OPLOC_MEM_WO); 2016 2019 } 2017 2020 #if ARCH_BITS == 64 … … 2025 2028 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2026 2029 (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT, 2027 4, 0, BS3CG1OPLOC_MEM_ RW);2030 4, 0, BS3CG1OPLOC_MEM_WO); 2028 2031 pThis->fInvalidEncoding = true; 2029 2032 } … … 2039 2042 2040 2043 2041 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq WO_Vq(PBS3CG1STATE pThis, unsigned iEncoding)2044 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq_WO_Vq(PBS3CG1STATE pThis, unsigned iEncoding) 2042 2045 { 2043 2046 unsigned off; … … 2046 2049 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_LO; 2047 2050 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 2048 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_ RW);2051 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_WO); 2049 2052 } 2050 2053 else if (iEncoding == 1) … … 2052 2055 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_LO; 2053 2056 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 2054 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_ RW);2057 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO); 2055 2058 } 2056 2059 else … … 2061 2064 2062 2065 2063 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq WO_VqHi(PBS3CG1STATE pThis, unsigned iEncoding)2066 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq_WO_VqHi(PBS3CG1STATE pThis, unsigned iEncoding) 2064 2067 { 2065 2068 unsigned off; … … 2068 2071 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_HI; 2069 2072 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 2070 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_ RW);2073 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_WO); 2071 2074 } 2072 2075 else if (iEncoding == 1) … … 2074 2077 pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_HI; 2075 2078 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 2076 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_ RW);2079 off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO); 2077 2080 } 2078 2081 else … … 2254 2257 2255 2258 case BS3CG1ENC_MODRM_Wss_WO_Vss: 2256 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_ Vss(pThis, iEncoding);2259 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_WO_Vss(pThis, iEncoding); 2257 2260 case BS3CG1ENC_MODRM_Wsd_WO_Vsd: 2258 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_ Vsd(pThis, iEncoding);2261 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_WO_Vsd(pThis, iEncoding); 2259 2262 case BS3CG1ENC_MODRM_Wps_WO_Vps: 2260 2263 case BS3CG1ENC_MODRM_Wpd_WO_Vpd: 2261 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_ Vps__OR__BS3CG1ENC_MODRM_Wpd_Vpd(pThis, iEncoding);2264 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_WO_Vps__OR__BS3CG1ENC_MODRM_Wpd_WO_Vpd(pThis, iEncoding); 2262 2265 case BS3CG1ENC_MODRM_WqZxReg_WO_Vq: 2263 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_ Vq(pThis, iEncoding);2266 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_WO_Vq(pThis, iEncoding); 2264 2267 2265 2268 case BS3CG1ENC_MODRM_Pq_WO_Uq: … … 2269 2272 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_WO_UqHi(pThis, iEncoding); 2270 2273 case BS3CG1ENC_MODRM_Vq_WO_Mq: 2271 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_ Mq(pThis, iEncoding);2274 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_WO_Mq(pThis, iEncoding); 2272 2275 case BS3CG1ENC_MODRM_VqHi_WO_Uq: 2273 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_ Uq(pThis, iEncoding);2276 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_WO_Uq(pThis, iEncoding); 2274 2277 case BS3CG1ENC_MODRM_VqHi_WO_Mq: 2275 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_ Mq(pThis, iEncoding);2278 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_WO_Mq(pThis, iEncoding); 2276 2279 case BS3CG1ENC_MODRM_Vdq_WO_Wdq: 2277 2280 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vdq_WO_Wdq(pThis, iEncoding); 2278 2281 case BS3CG1ENC_MODRM_Vpd_WO_Wpd: 2279 2282 case BS3CG1ENC_MODRM_Vps_WO_Wps: 2280 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_W ps__OR__BS3CG1ENC_MODRM_Vpd_Wpd(pThis, iEncoding);2283 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_WO_Wps__OR__BS3CG1ENC_MODRM_Vpd_WO_Wpd(pThis, iEncoding); 2281 2284 case BS3CG1ENC_MODRM_VssZxReg_WO_Wss: 2282 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_W ss(pThis, iEncoding);2285 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_WO_Wss(pThis, iEncoding); 2283 2286 case BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd: 2284 2287 case BS3CG1ENC_MODRM_VqZxReg_WO_Wq: 2285 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_W sd__OR__MODRM_VqZxReg_Wq(pThis, iEncoding);2288 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd__OR__MODRM_VqZxReg_WO_Wq(pThis, iEncoding); 2286 2289 case BS3CG1ENC_MODRM_VqZxReg_WO_Nq: 2287 2290 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqZxReg_WO_Nq(pThis, iEncoding); … … 2297 2300 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Md_WO(pThis, iEncoding); 2298 2301 case BS3CG1ENC_VEX_MODRM_Md_WO: 2299 return Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_Md WO(pThis, iEncoding);2302 return Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_Md_WO(pThis, iEncoding); 2300 2303 case BS3CG1ENC_MODRM_Mq_WO_Vq: 2301 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq WO_Vq(pThis, iEncoding);2304 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq_WO_Vq(pThis, iEncoding); 2302 2305 case BS3CG1ENC_MODRM_Mq_WO_VqHi: 2303 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq WO_VqHi(pThis, iEncoding);2306 return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq_WO_VqHi(pThis, iEncoding); 2304 2307 2305 2308 case BS3CG1ENC_FIXED: … … 2503 2506 pThis->iRmOp = 0; 2504 2507 pThis->aOperands[0].cbOp = 4; 2505 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_ RW;2508 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_WO; 2506 2509 break; 2507 2510 … … 2512 2515 pThis->aOperands[0].cbOp = 8; 2513 2516 pThis->aOperands[1].cbOp = 8; 2514 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_ RW;2517 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_WO; 2515 2518 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 2516 2519 break; … … 3041 3044 3042 3045 case BS3CG1OPLOC_MEM_RW: 3046 case BS3CG1OPLOC_MEM_WO: 3043 3047 if (pbInstr) 3044 3048 PtrField.pu8 = &pThis->pbDataPg[X86_PAGE_SIZE - pThis->aOperands[idxOp].off]; … … 3220 3224 3221 3225 case BS3CG1OPLOC_MEM_RW: 3226 case BS3CG1OPLOC_MEM_WO: 3222 3227 if (pbInstr) 3223 3228 PtrField.pu8 = &pThis->pbDataPg[X86_PAGE_SIZE - pThis->aOperands[idxOp].off]; … … 3347 3352 iOperand = pThis->cOperands; 3348 3353 while (iOperand-- > 0) 3349 if (pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_RW) 3354 if ( pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_RW 3355 || pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_WO) 3350 3356 { 3351 3357 if (pThis->aOperands[iOperand].off) … … 3515 3521 case BS3CG1OPLOC_MEM: 3516 3522 case BS3CG1OPLOC_MEM_RW: 3523 case BS3CG1OPLOC_MEM_WO: 3517 3524 if (pThis->aOperands[iOperand].off) 3518 3525 { … … 3529 3536 break; 3530 3537 } 3531 if (pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_RW) 3538 if ( pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_WO 3539 || pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_RW) 3532 3540 { 3533 3541 PtrUnion.pb = pThis->MemOp.ab;
Note:
See TracChangeset
for help on using the changeset viewer.