vbox的更動 67004 路徑 trunk/src/VBox/ValidationKit
- 時間撮記:
- 2017-5-22 上午10:20:28 (8 年 以前)
- 位置:
- trunk/src/VBox/ValidationKit/bootsectors
- 檔案:
-
- 修改 2 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
r67003 r67004 1787 1787 1788 1788 1789 /* Differs from Bs3Cg1EncodeNext_MODRM_PdZx_WO_Ed_WZ in that REX.R isn't ignored. */ 1790 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_MODRM_Vd_WO_Ed_WZ(PBS3CG1STATE pThis, unsigned iEncoding) 1791 { 1792 unsigned off; 1793 switch (iEncoding) 1794 { 1795 case 0: 1796 pThis->aOperands[pThis->iRmOp ].enmLocation = pThis->aOperands[pThis->iRmOp].enmLocationReg; 1797 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1798 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0); 1799 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0; 1800 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1; 1801 break; 1802 case 1: 1803 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1804 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 1805 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2; 1806 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6; 1807 break; 1808 case 2: 1809 pThis->aOperands[pThis->iRmOp ].enmLocation = pThis->aOperands[pThis->iRmOp].enmLocationMem; 1810 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1811 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4 /*iReg*/, 0 /*cbMisalign*/); 1812 break; 1813 case 3: 1814 off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0)); 1815 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 7 /*iReg*/, 1 /*cbMisalign*/); 1816 break; 1817 1818 default: 1819 return 0; 1820 } 1821 pThis->cbCurInstr = off; 1822 return iEncoding + 1; 1823 } 1824 1825 1826 /* Differs from Bs3Cg1EncodeNext_MODRM_Pq_WO_Eq_WNZ in that REX.R isn't ignored. */ 1827 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_MODRM_Vq_WO_Eq_WNZ(PBS3CG1STATE pThis, unsigned iEncoding) 1828 { 1829 #if ARCH_BITS == 64 1830 if (BS3CG1_IS_64BIT_TARGET(pThis)) 1831 { 1832 unsigned off; 1833 switch (iEncoding) 1834 { 1835 case 0: 1836 pThis->aOperands[pThis->iRmOp ].enmLocation = pThis->aOperands[pThis->iRmOp].enmLocationReg; 1837 off = Bs3Cg1InsertReqPrefix(pThis, 0); 1838 pThis->abCurInstr[off++] = REX_W___; 1839 off = Bs3Cg1InsertOpcodes(pThis, off); 1840 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0); 1841 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0; 1842 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1; 1843 break; 1844 case 1: 1845 off = Bs3Cg1InsertReqPrefix(pThis, 0); 1846 pThis->abCurInstr[off++] = REX_W___; 1847 off = Bs3Cg1InsertOpcodes(pThis, off); 1848 pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 6, 2); 1849 pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 2; 1850 pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 6; 1851 break; 1852 case 2: 1853 pThis->aOperands[pThis->iRmOp ].enmLocation = pThis->aOperands[pThis->iRmOp].enmLocationMem; 1854 off = Bs3Cg1InsertReqPrefix(pThis, 0); 1855 pThis->abCurInstr[off++] = REX_W___; 1856 off = Bs3Cg1InsertOpcodes(pThis, off); 1857 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 4 /*iReg*/, 0 /*cbMisalign*/); 1858 break; 1859 case 3: 1860 off = Bs3Cg1InsertReqPrefix(pThis, 0); 1861 pThis->abCurInstr[off++] = REX_W___; 1862 off = Bs3Cg1InsertOpcodes(pThis, off); 1863 off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 7 /*iReg*/, 1 /*cbMisalign*/); 1864 break; 1865 1866 default: 1867 return 0; 1868 } 1869 pThis->cbCurInstr = off; 1870 return iEncoding + 1; 1871 } 1872 #endif 1873 return 0; 1874 } 1875 1876 1789 1877 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_MODRM_Vq_WO_UqHi(PBS3CG1STATE pThis, unsigned iEncoding) 1790 1878 { … … 3901 3989 pThis->aOperands[1].cbOp = 8; 3902 3990 pThis->aOperands[0].idxFieldBase = BS3CG1DST_MM0; 3991 pThis->aOperands[1].idxFieldBase = BS3CG1DST_RAX; 3992 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX; 3993 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 3994 pThis->aOperands[1].enmLocationReg = BS3CG1OPLOC_CTX; 3995 pThis->aOperands[1].enmLocationMem = BS3CG1OPLOC_MEM; 3996 break; 3997 3998 case BS3CG1ENC_MODRM_VdZx_WO_Ed_WZ: 3999 pThis->pfnEncoder = Bs3Cg1EncodeNext_MODRM_Vd_WO_Ed_WZ; 4000 pThis->iRegOp = 0; 4001 pThis->iRmOp = 1; 4002 pThis->aOperands[0].cbOp = 4; 4003 pThis->aOperands[1].cbOp = 4; 4004 pThis->aOperands[0].idxFieldBase = BS3CG1DST_XMM0_DW0_ZX; 4005 pThis->aOperands[1].idxFieldBase = BS3CG1DST_EAX; 4006 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX; 4007 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 4008 pThis->aOperands[1].enmLocationReg = BS3CG1OPLOC_CTX; 4009 pThis->aOperands[1].enmLocationMem = BS3CG1OPLOC_MEM; 4010 break; 4011 4012 case BS3CG1ENC_MODRM_VqZx_WO_Eq_WNZ: 4013 pThis->pfnEncoder = Bs3Cg1EncodeNext_MODRM_Vq_WO_Eq_WNZ; 4014 pThis->iRegOp = 0; 4015 pThis->iRmOp = 1; 4016 pThis->aOperands[0].cbOp = 8; 4017 pThis->aOperands[1].cbOp = 8; 4018 pThis->aOperands[0].idxFieldBase = BS3CG1DST_XMM0_LO_ZX; 3903 4019 pThis->aOperands[1].idxFieldBase = BS3CG1DST_RAX; 3904 4020 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX; -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h
r67003 r67004 78 78 BS3CG1OP_Usd, 79 79 BS3CG1OP_Usd_WO, 80 BS3CG1OP_VdZx_WO, 80 81 BS3CG1OP_Vss, 81 82 BS3CG1OP_Vss_WO, … … 143 144 BS3CG1ENC_MODRM_PdZx_WO_Ed_WZ, 144 145 BS3CG1ENC_MODRM_Pq_WO_Eq_WNZ, 146 BS3CG1ENC_MODRM_VdZx_WO_Ed_WZ, 145 147 BS3CG1ENC_MODRM_Vq_WO_UqHi, 146 148 BS3CG1ENC_MODRM_Vq_WO_Mq, 147 149 BS3CG1ENC_MODRM_VqHi_WO_Uq, 148 150 BS3CG1ENC_MODRM_VqHi_WO_Mq, 151 BS3CG1ENC_MODRM_VqZx_WO_Eq_WNZ, 149 152 BS3CG1ENC_MODRM_Vdq_WO_Wdq, 150 153 BS3CG1ENC_MODRM_Vpd_WO_Wpd,
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器