Assume iretw=16-bit / iretd=32-bit if CodeSize is unknown

This commit is contained in:
de4dot 2018-09-07 21:06:06 +02:00
parent b1d4580886
commit cdc27ee491
2 changed files with 4 additions and 7 deletions

View File

@ -1118,7 +1118,6 @@ namespace Iced.Intel {
/// <returns></returns>
public int StackPointerIncrement {
get {
CodeSize codeSize;
switch (Code) {
case Code.Pushw_ES:
case Code.Pushw_CS:
@ -1328,14 +1327,12 @@ namespace Iced.Intel {
return 8 + 8;
case Code.Iretw:
codeSize = CodeSize;
if (codeSize == CodeSize.Code64 || codeSize == CodeSize.Unknown)
if (CodeSize == CodeSize.Code64)
return 2 * 5;
return 2 * 3;
case Code.Iretd:
codeSize = CodeSize;
if (codeSize == CodeSize.Code64 || codeSize == CodeSize.Unknown)
if (CodeSize == CodeSize.Code64)
return 4 * 5;
return 4 * 3;

View File

@ -1088,7 +1088,7 @@ namespace Iced.Intel {
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 0 * 4, MemorySize.UInt32, OpAccess.Read);
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 1 * 4, MemorySize.UInt32, OpAccess.Read);
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 2 * 4, MemorySize.UInt32, OpAccess.Read);
if ((flags & Flags.Is64Bit) != 0) {
if (instruction.CodeSize == CodeSize.Code64) {
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 3 * 4, MemorySize.UInt32, OpAccess.Read);
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 4 * 4, MemorySize.UInt32, OpAccess.Read);
}
@ -1098,7 +1098,7 @@ namespace Iced.Intel {
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 0 * 2, MemorySize.UInt16, OpAccess.Read);
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 1 * 2, MemorySize.UInt16, OpAccess.Read);
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 2 * 2, MemorySize.UInt16, OpAccess.Read);
if ((flags & Flags.Is64Bit) != 0) {
if (instruction.CodeSize == CodeSize.Code64) {
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 3 * 2, MemorySize.UInt16, OpAccess.Read);
AddMemory(flags, ref usedMemoryLocations, Register.SS, xsp, Register.None, 1, 4 * 2, MemorySize.UInt16, OpAccess.Read);
}