VirtualBox

Changeset 65836 in vbox for trunk


Ignore:
Timestamp:
Feb 21, 2017 5:23:11 PM (8 years ago)
Author:
vboxsync
Message:

IEMAllInstructionsPython.py: Fixes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py

    r65834 r65836  
    171171            self.sMessage = sMessage;
    172172
     173    ## For ascii ~ operator.
     174    kdHexInv = {
     175        '0': 'f',
     176        '1': 'e',
     177        '2': 'd',
     178        '3': 'c',
     179        '4': 'b',
     180        '5': 'a',
     181        '6': '9',
     182        '7': '8',
     183        '8': '7',
     184        '9': '6',
     185        'a': '5',
     186        'b': '4',
     187        'c': '3',
     188        'd': '2',
     189        'e': '1',
     190        'f': '0',
     191    };
     192
    173193    def get(self, sValue):
    174194        """
     
    198218            raise TestType.BadValue('failed to convert "%s" to integer (%s)' % (sValue, oXcpt));
    199219
    200         # Convert the hex string and pad it to a decent value.
     220        # Convert the hex string and pad it to a decent value.  Negative values
     221        # needs to be manually converted to something non-negative (~-n + 1).
    201222        if iValue >= 0:
    202223            sHex = hex(iValue);
    203         else:
    204             sHex = hex(iValue);
    205         assert sHex[:2] == '0x', sHex;
    206         if sys.version_info[0] >= 3:
     224            if sys.version_info[0] < 3:
     225                assert sHex[-1] == 'L';
     226                sHex = sHex[:-1];
     227            assert sHex[:2] == '0x';
    207228            sHex = sHex[2:];
    208229        else:
    209             assert sHex[-1] == 'L';
    210             sHex = sHex[2:-1];
     230            sHex = hex(-iValue - 1);
     231            if sys.version_info[0] < 3:
     232                assert sHex[-1] == 'L';
     233                sHex = sHex[:-1];
     234            assert sHex[:2] == '0x';
     235            sHex = ''.join([self.kdHexInv[sDigit] for sDigit in sHex[2:]]);
    211236
    212237        cDigits = len(sHex);
     
    15841609                                    oValid = TestInOut.kdTypes[sType].validate(sValue);
    15851610                                    if oValid is True:
    1586                                         if not TestInOut.kdTypes[sType].isAndOrPair(sValue) or sOp == '!=':
     1611                                        if not TestInOut.kdTypes[sType].isAndOrPair(sValue) or sOp == '=':
    15871612                                            oItem = TestInOut(sField, sOp, sValue, sType);
    15881613                                        else:
    1589                                             self.errorComment(iTagLine,
    1590                                                               '%s: and-or value "%s" can only be used with the "="'
    1591                                                                         % ( sTag, sDesc, sValue, sItem, sType, ));
     1614                                            self.errorComment(iTagLine, '%s: and-or %s value "%s" can only be used with the "="'
     1615                                                                        % ( sTag, sDesc, sItem, ));
    15921616                                    else:
    15931617                                        self.errorComment(iTagLine, '%s: invalid %s value "%s" in "%s" (type: %s)'
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette