@@ -6303,3 +6303,133 @@ test_cases:
63036303 opcode : [ 0xff, 0x00, 0x00, 0x00 ]
63046304 regs_read : [ rax ]
63056305 regs_write : [ rip ]
6306+
6307+ -
6308+ input :
6309+ name : " System call instructions, 16-bit decode"
6310+ bytes : [
6311+ 0x0f, 0x34, # sysenter
6312+ 0x0f, 0x35, # sysexit
6313+ ]
6314+ arch : " x86"
6315+ options : [ CS_OPT_DETAIL, CS_MODE_16 ]
6316+ expected :
6317+ insns :
6318+ -
6319+ asm_text : " sysenter"
6320+ details :
6321+ x86 :
6322+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6323+ opcode : [ 0x0f, 0x34, 0x00, 0x00 ]
6324+ eflags : [ X86_EFLAGS_MODIFY_IF ]
6325+ regs_read : [ ]
6326+ regs_write : [ ip, sp, flags ]
6327+ -
6328+ asm_text : " sysexit"
6329+ details :
6330+ x86 :
6331+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6332+ opcode : [ 0x0f, 0x35, 0x00, 0x00 ]
6333+ eflags : [ ]
6334+ regs_read : [ cx, dx ]
6335+ regs_write : [ ip, sp ]
6336+
6337+ -
6338+ input :
6339+ name : " System call instructions, 32-bit decode"
6340+ bytes : [
6341+ 0x0f, 0x34, # sysenter
6342+ 0x0f, 0x35, # sysexit
6343+ ]
6344+ arch : " x86"
6345+ options : [ CS_OPT_DETAIL, CS_MODE_32 ]
6346+ expected :
6347+ insns :
6348+ -
6349+ asm_text : " sysenter"
6350+ details :
6351+ x86 :
6352+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6353+ opcode : [ 0x0f, 0x34, 0x00, 0x00 ]
6354+ eflags : [ X86_EFLAGS_MODIFY_IF ]
6355+ regs_read : [ ]
6356+ regs_write : [ eip, esp, eflags ]
6357+ -
6358+ asm_text : " sysexit"
6359+ details :
6360+ x86 :
6361+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6362+ opcode : [ 0x0f, 0x35, 0x00, 0x00 ]
6363+ eflags : [ ]
6364+ regs_read : [ ecx, edx ]
6365+ regs_write : [ eip, esp ]
6366+
6367+ -
6368+ input :
6369+ name : " System call instructions, 64-bit decode"
6370+ bytes : [
6371+ 0x0f, 0x05, # syscall
6372+ 0x0f, 0x34, # sysenter
6373+ 0x0f, 0x35, # sysexit
6374+ 0x40, 0x0f, 0x35, # REX.W sysexit
6375+ 0x0f, 0x07, # sysret
6376+ 0x40, 0x0f, 0x07, # REX.W sysret
6377+ ]
6378+ arch : " x86"
6379+ options : [ CS_OPT_DETAIL, CS_MODE_64 ]
6380+ expected :
6381+ insns :
6382+ -
6383+ asm_text : " syscall"
6384+ details :
6385+ x86 :
6386+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6387+ opcode : [ 0x0f, 0x05, 0x00, 0x00 ]
6388+ eflags : [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_RF ] # should write all flags
6389+ regs_read : [ ]
6390+ regs_write : [ rip, rcx, r11, rflags ]
6391+ -
6392+ asm_text : " sysenter"
6393+ details :
6394+ x86 :
6395+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6396+ opcode : [ 0x0f, 0x34, 0x00, 0x00 ]
6397+ eflags : [ X86_EFLAGS_MODIFY_IF ]
6398+ regs_read : [ ]
6399+ regs_write : [ rip, rsp, rflags ]
6400+ -
6401+ asm_text : " sysexit"
6402+ details :
6403+ x86 :
6404+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6405+ opcode : [ 0x0f, 0x35, 0x00, 0x00 ]
6406+ eflags : [ ]
6407+ regs_read : [ rcx, rdx ]
6408+ regs_write : [ rip, rsp ]
6409+ -
6410+ asm_text : " sysexit"
6411+ details :
6412+ x86 :
6413+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6414+ opcode : [ 0x0f, 0x35, 0x00, 0x00 ]
6415+ eflags : [ ]
6416+ regs_read : [ rcx, rdx ]
6417+ regs_write : [ rip, rsp ]
6418+ -
6419+ asm_text : " sysret"
6420+ details :
6421+ x86 :
6422+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6423+ opcode : [ 0x0f, 0x07, 0x00, 0x00 ]
6424+ eflags : [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_RF ]
6425+ regs_read : [ rcx, r11 ]
6426+ regs_write : [ rip, rflags ]
6427+ -
6428+ asm_text : " sysret"
6429+ details :
6430+ x86 :
6431+ prefix : [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
6432+ opcode : [ 0x0f, 0x07, 0x00, 0x00 ]
6433+ eflags : [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_RF ]
6434+ regs_read : [ rcx, r11 ]
6435+ regs_write : [ rip, rflags ]
0 commit comments