about summary refs log tree commit diff stats
path: root/miasm2/arch
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/arch')
-rw-r--r--miasm2/arch/x86/arch.py6
-rw-r--r--miasm2/arch/x86/regs.py5
-rw-r--r--miasm2/arch/x86/sem.py1
3 files changed, 8 insertions, 4 deletions
diff --git a/miasm2/arch/x86/arch.py b/miasm2/arch/x86/arch.py
index 916b5428..2b9b3cb1 100644
--- a/miasm2/arch/x86/arch.py
+++ b/miasm2/arch/x86/arch.py
@@ -1041,8 +1041,10 @@ class x86_imm(imm_noarg):
         return swap_uint(self.l, v)
 
 
-class x86_imm_fix(imm_noarg):
+class x86_imm_fix_08(imm_noarg):
     parser = base_expr
+    intsize = 8
+    intmask = (1 << intsize) - 1
 
     def decodeval(self, v):
         return self.ival
@@ -2980,7 +2982,7 @@ u16 = bs(l=16, cls=(x86_16, m_arg))
 u32 = bs(l=32, cls=(x86_32, m_arg))
 s3264 = bs(l=32, cls=(x86_s32to64, m_arg))
 
-u08_3 = bs(l=0, cls=(x86_imm_fix, m_arg), ival = 3)
+u08_3 = bs(l=0, cls=(x86_imm_fix_08, m_arg), ival = 3)
 
 d0 = bs("000", fname='reg')
 d1 = bs("001", fname='reg')
diff --git a/miasm2/arch/x86/regs.py b/miasm2/arch/x86/regs.py
index 9c87834f..3bca8fe2 100644
--- a/miasm2/arch/x86/regs.py
+++ b/miasm2/arch/x86/regs.py
@@ -6,6 +6,7 @@ IP = ExprId('IP', 16)
 EIP = ExprId('EIP', 32)
 RIP = ExprId('RIP', 64)
 exception_flags = ExprId('exception_flags', 32)
+interrupt_num = ExprId('interrupt_num', 8)
 
 # GP
 
@@ -399,7 +400,7 @@ all_regs_ids = [
     XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15,
 
 
-    exception_flags,
+    exception_flags, interrupt_num,
 ] + fltregs32_expr
 
 all_regs_ids_no_alias = [
@@ -421,7 +422,7 @@ all_regs_ids_no_alias = [
     XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15,
 
 
-    exception_flags,
+    exception_flags, interrupt_num,
 ] + fltregs32_expr
 
 all_regs_ids_byname = dict([(x.name, x) for x in all_regs_ids])
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py
index 1dd5bc67..41a2c229 100644
--- a/miasm2/arch/x86/sem.py
+++ b/miasm2/arch/x86/sem.py
@@ -2799,6 +2799,7 @@ def l_int(ir, instr, a):
         except_int = EXCEPT_INT_XX
     e.append(m2_expr.ExprAff(exception_flags,
                      m2_expr.ExprInt32(except_int)))
+    e.append(m2_expr.ExprAff(interrupt_num, a))
     return e, []