# CALL instruction tests # Format: RawBytes;Instructions RawBytes;Instructions # CALL rel32 (opcode E8) E810000000;[{ "Type": "Call", "Operands": ["0x00000015"] }] E8FEFFFFFF;[{ "Type": "Call", "Operands": ["0x00000003"] }] # CALL r/m32 (opcode FF /2) with register operands FFD0;[{ "Type": "Call", "Operands": ["eax"] }] FFD1;[{ "Type": "Call", "Operands": ["ecx"] }] FFD2;[{ "Type": "Call", "Operands": ["edx"] }] FFD3;[{ "Type": "Call", "Operands": ["ebx"] }] FFD4;[{ "Type": "Call", "Operands": ["esp"] }] FFD5;[{ "Type": "Call", "Operands": ["ebp"] }] FFD6;[{ "Type": "Call", "Operands": ["esi"] }] FFD7;[{ "Type": "Call", "Operands": ["edi"] }] # CALL m32 (opcode FF /2) with memory operands FF10;[{ "Type": "Call", "Operands": ["dword ptr [eax]"] }] FF11;[{ "Type": "Call", "Operands": ["dword ptr [ecx]"] }] FF12;[{ "Type": "Call", "Operands": ["dword ptr [edx]"] }] FF13;[{ "Type": "Call", "Operands": ["dword ptr [ebx]"] }] FF14;[{ "Type": "Call", "Operands": ["dword ptr [esp]"] }] FF15;[{ "Type": "Call", "Operands": ["dword ptr [ebp]"] }] FF16;[{ "Type": "Call", "Operands": ["dword ptr [esi]"] }] FF17;[{ "Type": "Call", "Operands": ["dword ptr [edi]"] }] # CALL m32 (opcode FF /2) with SIB addressing FF1400;[{ "Type": "Call", "Operands": ["dword ptr [eax+eax*1]"] }] FF14C0;[{ "Type": "Call", "Operands": ["dword ptr [eax+eax*8]"] }] FF1444;[{ "Type": "Call", "Operands": ["dword ptr [esp+eax*2]"] }] FF1485;[{ "Type": "Call", "Operands": ["dword ptr [ebp+eax*4]"] }] FF1498;[{ "Type": "Call", "Operands": ["dword ptr [eax+ebx*4]"] }] FF14D9;[{ "Type": "Call", "Operands": ["dword ptr [ecx+ebx*8]"] }] FF149D;[{ "Type": "Call", "Operands": ["dword ptr [ebp+ebx*4]"] }] # CALL m32 (opcode FF /2) with displacement FF5000;[{ "Type": "Call", "Operands": ["dword ptr [eax+0x0]"] }] FF5010;[{ "Type": "Call", "Operands": ["dword ptr [eax+0x10]"] }] FF90FFFFFF7F;[{ "Type": "Call", "Operands": ["dword ptr [eax+0x7FFFFFFF]"] }] FF9000000080;[{ "Type": "Call", "Operands": ["dword ptr [eax+0x80000000]"] }] # CALL m32 (opcode FF /2) with SIB and displacement FF5400FF;[{ "Type": "Call", "Operands": ["dword ptr [eax+eax*1-0x1]"] }] FF54C0FF;[{ "Type": "Call", "Operands": ["dword ptr [eax+eax*8-0x1]"] }] FF5444FF;[{ "Type": "Call", "Operands": ["dword ptr [esp+eax*2-0x1]"] }] FF5485FF;[{ "Type": "Call", "Operands": ["dword ptr [ebp+eax*4-0x1]"] }] FF5498FF;[{ "Type": "Call", "Operands": ["dword ptr [eax+ebx*4-0x1]"] }] FF54D9FF;[{ "Type": "Call", "Operands": ["dword ptr [ecx+ebx*8-0x1]"] }] FF549DFF;[{ "Type": "Call", "Operands": ["dword ptr [ebp+ebx*4-0x1]"] }] # CALL m16:32 (opcode FF /3) - Far call with memory operand FF1C;[{ "Type": "Call", "Operands": ["fword ptr [esp]"] }] FF1D;[{ "Type": "Call", "Operands": ["fword ptr [ebp]"] }] FF1E;[{ "Type": "Call", "Operands": ["fword ptr [esi]"] }] FF1F;[{ "Type": "Call", "Operands": ["fword ptr [edi]"] }] # CALL m32 (opcode FF /2) with direct memory operand FF1578563412;[{ "Type": "Call", "Operands": ["dword ptr [0x12345678]"] }] # CALL m32 (opcode FF /2) with segment override prefixes 26FF5510;[{ "Type": "Call", "Operands": ["dword ptr es:[ebp+0x10]"] }] 2EFF5510;[{ "Type": "Call", "Operands": ["dword ptr cs:[ebp+0x10]"] }] 36FF5510;[{ "Type": "Call", "Operands": ["dword ptr ss:[ebp+0x10]"] }] 3EFF5510;[{ "Type": "Call", "Operands": ["dword ptr ds:[ebp+0x10]"] }] 64FF5510;[{ "Type": "Call", "Operands": ["dword ptr fs:[ebp+0x10]"] }] 65FF5510;[{ "Type": "Call", "Operands": ["dword ptr gs:[ebp+0x10]"] }]