Changeset 98910 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
- Timestamp:
- Mar 11, 2023 1:59:59 AM (22 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
r98905 r98910 1748 1748 Statement in a microcode block. 1749 1749 """ 1750 1751 1750 def __init__(self, sName, asParams): 1752 1751 self.sName = sName; ##< 'IEM_MC_XXX' or 'C++'. … … 1772 1771 1773 1772 class McStmtCond(McStmt): 1774 """ Base class for conditional statements (IEM_MC_IF_XXX). """ 1775 1773 """ 1774 Base class for conditional statements (IEM_MC_IF_XXX). 1775 """ 1776 1776 def __init__(self, sName, asParams): 1777 1777 McStmt.__init__(self, sName, asParams); … … 1805 1805 assert sRefType in ('none', 'local'); 1806 1806 1807 1808 class McStmtCall(McStmt): 1809 """ IEM_MC_CALL_* """ 1810 def __init__(self, sName, asParams, iFnParam, iRcNameParam = -1): 1811 McStmt.__init__(self, sName, asParams); 1812 self.idxFn = iFnParam; 1813 self.idxParams = iFnParam + 1; 1814 self.sFn = asParams[iFnParam]; 1815 self.iRcName = None if iRcNameParam < 0 else asParams[iRcNameParam]; 1816 1807 1817 class McCppGeneric(McStmt): 1808 1818 """ 1809 1819 Generic C++/C statement. 1810 1820 """ 1811 1812 1821 def __init__(self, sCode, fDecode, sName = 'C++'): 1813 1822 McStmt.__init__(self, sName, [sCode,]); … … 1847 1856 C++/C Preprocessor directive. 1848 1857 """ 1849 1850 1858 def __init__(self, sCode): 1851 1859 McCppGeneric.__init__(self, sCode, False, sName = 'C++/preproc'); … … 1958 1966 oSelf.checkStmtParamCount(sName, asParams, 3); 1959 1967 return McStmtVar(sName, asParams, asParams[0], asParams[1], sConstValue = asParams[2]); 1968 1969 @staticmethod 1970 def parseMcCallAImpl(oSelf, sName, asParams): 1971 """ IEM_MC_CALL_AIMPL_3|4 """ 1972 cArgs = int(sName[-1]); 1973 oSelf.checkStmtParamCount(sName, asParams, 2 + cArgs); 1974 return McStmtCall(sName, asParams, 1, 0); 1975 1976 @staticmethod 1977 def parseMcCallVoidAImpl(oSelf, sName, asParams): 1978 """ IEM_MC_CALL_VOID_AIMPL_2|3 """ 1979 cArgs = int(sName[-1]); 1980 oSelf.checkStmtParamCount(sName, asParams, 1 + cArgs); 1981 return McStmtCall(sName, asParams, 0); 1982 1983 @staticmethod 1984 def parseMcCallAvxAImpl(oSelf, sName, asParams): 1985 """ IEM_MC_CALL_AVX_AIMPL_2|3 """ 1986 cArgs = int(sName[-1]); 1987 oSelf.checkStmtParamCount(sName, asParams, 1 + cArgs); 1988 return McStmtCall(sName, asParams, 0); 1989 1990 @staticmethod 1991 def parseMcCallFpuAImpl(oSelf, sName, asParams): 1992 """ IEM_MC_CALL_FPU_AIMPL_1|2|3 """ 1993 cArgs = int(sName[-1]); 1994 oSelf.checkStmtParamCount(sName, asParams, 1 + cArgs); 1995 return McStmtCall(sName, asParams, 0); 1996 1997 @staticmethod 1998 def parseMcCallMmxAImpl(oSelf, sName, asParams): 1999 """ IEM_MC_CALL_MMX_AIMPL_2|3 """ 2000 cArgs = int(sName[-1]); 2001 oSelf.checkStmtParamCount(sName, asParams, 1 + cArgs); 2002 return McStmtCall(sName, asParams, 0); 2003 2004 @staticmethod 2005 def parseMcCallSseAImpl(oSelf, sName, asParams): 2006 """ IEM_MC_CALL_SSE_AIMPL_2|3 """ 2007 cArgs = int(sName[-1]); 2008 oSelf.checkStmtParamCount(sName, asParams, 1 + cArgs); 2009 return McStmtCall(sName, asParams, 0); 2010 2011 @staticmethod 2012 def parseMcCallCImpl(oSelf, sName, asParams): 2013 """ IEM_MC_CALL_CIMPL_0|1|2|3|4|5 """ 2014 cArgs = int(sName[-1]); 2015 oSelf.checkStmtParamCount(sName, asParams, 1 + cArgs); 2016 return McStmtCall(sName, asParams, 0); 1960 2017 1961 2018 @staticmethod … … 2262 2319 offNextEnd = sRawCode.find(';', offEnd + 1); 2263 2320 fDecode = ( sRawCode.find('IEM_OPCODE_', off, max(offEnd, offNextEnd)) >= 0 2264 or sRawCode.find('IEMOP_HLP_DONE_', off, max(offEnd, offNextEnd)) >= 0); 2321 or sRawCode.find('IEMOP_HLP_DONE_', off, max(offEnd, offNextEnd)) >= 0 2322 or sRawCode.find('IEMOP_HLP_DECODED_', off, offEnd) >= 0 2323 or sRawCode.find('IEMOP_HLP_RAISE_UD_IF_MISSING_GUEST_FEATURE', off, offEnd) >= 0 2324 ); 2265 2325 2266 2326 if not oMatch: … … 2374 2434 'IEM_MC_BSWAP_LOCAL_U64': McBlock.parseMcGeneric, 2375 2435 'IEM_MC_CALC_RM_EFF_ADDR': McBlock.parseMcGeneric, 2376 'IEM_MC_CALL_AIMPL_3': McBlock.parseMc Generic,2377 'IEM_MC_CALL_AIMPL_4': McBlock.parseMc Generic,2378 'IEM_MC_CALL_AVX_AIMPL_2': McBlock.parseMc Generic,2379 'IEM_MC_CALL_AVX_AIMPL_3': McBlock.parseMc Generic,2380 'IEM_MC_CALL_CIMPL_0': McBlock.parseMc Generic,2381 'IEM_MC_CALL_CIMPL_1': McBlock.parseMc Generic,2382 'IEM_MC_CALL_CIMPL_2': McBlock.parseMc Generic,2383 'IEM_MC_CALL_CIMPL_3': McBlock.parseMc Generic,2384 'IEM_MC_CALL_CIMPL_4': McBlock.parseMc Generic,2385 'IEM_MC_CALL_CIMPL_5': McBlock.parseMc Generic,2386 'IEM_MC_CALL_FPU_AIMPL_1': McBlock.parseMc Generic,2387 'IEM_MC_CALL_FPU_AIMPL_2': McBlock.parseMc Generic,2388 'IEM_MC_CALL_FPU_AIMPL_3': McBlock.parseMc Generic,2389 'IEM_MC_CALL_MMX_AIMPL_2': McBlock.parseMc Generic,2390 'IEM_MC_CALL_MMX_AIMPL_3': McBlock.parseMc Generic,2391 'IEM_MC_CALL_SSE_AIMPL_2': McBlock.parseMc Generic,2392 'IEM_MC_CALL_SSE_AIMPL_3': McBlock.parseMc Generic,2393 'IEM_MC_CALL_VOID_AIMPL_0': McBlock.parseMc Generic,2394 'IEM_MC_CALL_VOID_AIMPL_1': McBlock.parseMc Generic,2395 'IEM_MC_CALL_VOID_AIMPL_2': McBlock.parseMc Generic,2396 'IEM_MC_CALL_VOID_AIMPL_3': McBlock.parseMc Generic,2397 'IEM_MC_CALL_VOID_AIMPL_4': McBlock.parseMc Generic,2436 'IEM_MC_CALL_AIMPL_3': McBlock.parseMcCallAImpl, 2437 'IEM_MC_CALL_AIMPL_4': McBlock.parseMcCallAImpl, 2438 'IEM_MC_CALL_AVX_AIMPL_2': McBlock.parseMcCallAvxAImpl, 2439 'IEM_MC_CALL_AVX_AIMPL_3': McBlock.parseMcCallAvxAImpl, 2440 'IEM_MC_CALL_CIMPL_0': McBlock.parseMcCallCImpl, 2441 'IEM_MC_CALL_CIMPL_1': McBlock.parseMcCallCImpl, 2442 'IEM_MC_CALL_CIMPL_2': McBlock.parseMcCallCImpl, 2443 'IEM_MC_CALL_CIMPL_3': McBlock.parseMcCallCImpl, 2444 'IEM_MC_CALL_CIMPL_4': McBlock.parseMcCallCImpl, 2445 'IEM_MC_CALL_CIMPL_5': McBlock.parseMcCallCImpl, 2446 'IEM_MC_CALL_FPU_AIMPL_1': McBlock.parseMcCallFpuAImpl, 2447 'IEM_MC_CALL_FPU_AIMPL_2': McBlock.parseMcCallFpuAImpl, 2448 'IEM_MC_CALL_FPU_AIMPL_3': McBlock.parseMcCallFpuAImpl, 2449 'IEM_MC_CALL_MMX_AIMPL_2': McBlock.parseMcCallMmxAImpl, 2450 'IEM_MC_CALL_MMX_AIMPL_3': McBlock.parseMcCallMmxAImpl, 2451 'IEM_MC_CALL_SSE_AIMPL_2': McBlock.parseMcCallSseAImpl, 2452 'IEM_MC_CALL_SSE_AIMPL_3': McBlock.parseMcCallSseAImpl, 2453 'IEM_MC_CALL_VOID_AIMPL_0': McBlock.parseMcCallVoidAImpl, 2454 'IEM_MC_CALL_VOID_AIMPL_1': McBlock.parseMcCallVoidAImpl, 2455 'IEM_MC_CALL_VOID_AIMPL_2': McBlock.parseMcCallVoidAImpl, 2456 'IEM_MC_CALL_VOID_AIMPL_3': McBlock.parseMcCallVoidAImpl, 2457 'IEM_MC_CALL_VOID_AIMPL_4': McBlock.parseMcCallVoidAImpl, 2398 2458 'IEM_MC_CLEAR_EFL_BIT': McBlock.parseMcGeneric, 2399 2459 'IEM_MC_CLEAR_FSW_EX': McBlock.parseMcGeneric,
Note:
See TracChangeset
for help on using the changeset viewer.