From e99c3d935dd75076779a849a196f657434520c2f Mon Sep 17 00:00:00 2001 From: Robin Leroy Date: Wed, 1 Jan 2025 06:07:01 +0100 Subject: [PATCH 1/2] Add the setmeow instructions --- osaca/data/isa/x86.yml | 104 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/osaca/data/isa/x86.yml b/osaca/data/isa/x86.yml index f995102..8d6afa5 100644 --- a/osaca/data/isa/x86.yml +++ b/osaca/data/isa/x86.yml @@ -530,6 +530,110 @@ instruction_forms: name: "rax" source: false destination: true + - name: [seta, setbe, setna, setnbe] + operands: + - class: "register" + name: "gpr" + source: false + destination: true + hidden_operands: + - class: "flag" + name: "CF" + source: true + destination: false + - class: "flag" + name: "ZF" + source: true + destination: false + - name: [setae, setb, setc, setnae, setnb, setnc] + operands: + - class: "register" + name: "gpr" + source: false + destination: true + hidden_operands: + - class: "flag" + name: "CF" + source: true + destination: false + - name: [sete, setne, setnz, setz] + operands: + - class: "register" + name: "gpr" + source: false + destination: true + hidden_operands: + - class: "flag" + name: "ZF" + source: true + destination: false + - name: [setg, setle, setng, setnle] + operands: + - class: "register" + name: "gpr" + source: false + destination: true + hidden_operands: + - class: "flag" + name: "ZF" + source: true + destination: false + - class: "flag" + name: "SF" + source: true + destination: false + - class: "flag" + name: "OF" + source: true + destination: false + - name: [setge, setl, setnge, setnl] + operands: + - class: "register" + name: "gpr" + source: false + destination: true + hidden_operands: + - class: "flag" + name: "SF" + source: true + destination: false + - class: "flag" + name: "OF" + source: true + destination: false + - name: [setno, seto] + operands: + - class: "register" + name: "gpr" + source: false + destination: true + hidden_operands: + - class: "flag" + name: "OF" + source: true + destination: false + - name: [setnp, setp, setpe, setpo] + operands: + - class: "register" + name: "gpr" + source: false + destination: true + hidden_operands: + - class: "flag" + name: "PF" + source: true + destination: false + - name: [setns, sets] + operands: + - class: "register" + name: "gpr" + source: false + destination: true + hidden_operands: + - class: "flag" + name: "SF" + source: true + destination: false - name: cmova operands: - class: "register" From 9e6373a013d6acd74f6902252c7403676bd49ad1 Mon Sep 17 00:00:00 2001 From: Robin Leroy Date: Sun, 5 Jan 2025 18:21:44 +0100 Subject: [PATCH 2/2] Configure the dependencies of the jmeow instructions on flags --- osaca/data/isa/x86.yml | 80 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/osaca/data/isa/x86.yml b/osaca/data/isa/x86.yml index 8d6afa5..bc1533b 100644 --- a/osaca/data/isa/x86.yml +++ b/osaca/data/isa/x86.yml @@ -530,6 +530,86 @@ instruction_forms: name: "rax" source: false destination: true + - name: [ja, jbe, jna, jnbe] + operands: + - class: identifier + hidden_operands: + - class: "flag" + name: "CF" + source: true + destination: false + - class: "flag" + name: "ZF" + source: true + destination: false + - name: [jae, jb, jc, jnae, jnb, jnc] + operands: + - class: identifier + hidden_operands: + - class: "flag" + name: "CF" + source: true + destination: false + - name: [je, jne, jnz, jz] + operands: + - class: identifier + hidden_operands: + - class: "flag" + name: "ZF" + source: true + destination: false + - name: [jg, jle, jng, jnle] + operands: + - class: identifier + hidden_operands: + - class: "flag" + name: "ZF" + source: true + destination: false + - class: "flag" + name: "SF" + source: true + destination: false + - class: "flag" + name: "OF" + source: true + destination: false + - name: [jge, jl, jnge, jnl] + operands: + - class: identifier + hidden_operands: + - class: "flag" + name: "SF" + source: true + destination: false + - class: "flag" + name: "OF" + source: true + destination: false + - name: [jno, jo] + operands: + - class: identifier + hidden_operands: + - class: "flag" + name: "OF" + source: true + destination: false + - name: [jnp, jp, jpe, jpo] + operands: + - class: identifier + hidden_operands: + - class: "flag" + name: "PF" + source: true + destination: false + - name: [jns, js] + operands: + - class: identifier + hidden_operands: + - class: "flag" + name: "SF" + source: true + destination: false - name: [seta, setbe, setna, setnbe] operands: - class: "register"