specialize.isa (5151:dec27c6c2b3b) | specialize.isa (5241:a6602acdd046) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2007 The Hewlett-Packard Development Company 4// All rights reserved. 5// 6// Redistribution and use of this software in source and binary forms, 7// with or without modification, are permitted provided that the 8// following conditions are met: --- 139 unchanged lines hidden (view full) --- 148 env.addReg(InstRegIndex) 149 elif opType.tag == "M": 150 # This refers to memory. The macroop constructor sets up modrm 151 # addressing. Non memory modrm settings should cause an error. 152 env.doModRM = True 153 return doRipRelativeDecode(Name, opTypes, env) 154 elif opType.tag == None or opType.size == None: 155 raise Exception, "Problem parsing operand tag: %s" % opType.tag | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2007 The Hewlett-Packard Development Company 4// All rights reserved. 5// 6// Redistribution and use of this software in source and binary forms, 7// with or without modification, are permitted provided that the 8// following conditions are met: --- 139 unchanged lines hidden (view full) --- 148 env.addReg(InstRegIndex) 149 elif opType.tag == "M": 150 # This refers to memory. The macroop constructor sets up modrm 151 # addressing. Non memory modrm settings should cause an error. 152 env.doModRM = True 153 return doRipRelativeDecode(Name, opTypes, env) 154 elif opType.tag == None or opType.size == None: 155 raise Exception, "Problem parsing operand tag: %s" % opType.tag |
156 elif opType.tag in ("C", "D", "G", "P", "S", "T", "V"): | 156 elif opType.tag == "C": 157 env.addReg(ModRMRegIndex) 158 Name += "_C" 159 elif opType.tag == "D": 160 env.addReg(ModRMRegIndex) 161 Name += "_D" 162 elif opType.tag in ("G", "P", "S", "T", "V"): |
157 # Use the "reg" field of the ModRM byte to select the register 158 env.addReg(ModRMRegIndex) 159 Name += "_R" 160 elif opType.tag in ("E", "Q", "W"): 161 # This might refer to memory or to a register. We need to 162 # divide it up farther. 163 regEnv = copy.copy(env) 164 regEnv.addReg(ModRMRMIndex) --- 28 unchanged lines hidden --- | 163 # Use the "reg" field of the ModRM byte to select the register 164 env.addReg(ModRMRegIndex) 165 Name += "_R" 166 elif opType.tag in ("E", "Q", "W"): 167 # This might refer to memory or to a register. We need to 168 # divide it up farther. 169 regEnv = copy.copy(env) 170 regEnv.addReg(ModRMRMIndex) --- 28 unchanged lines hidden --- |