From ddde95f7fdbd24354004e126da18d44ad97d7e37 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Sat, 16 Jun 2012 22:15:02 +0200 Subject: [PATCH] codegen: shift insn --- Mate/X86CodeGen.hs | 1 + tests/Shift1.java | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 tests/Shift1.java diff --git a/Mate/X86CodeGen.hs b/Mate/X86CodeGen.hs index e365367..d09304d 100644 --- a/Mate/X86CodeGen.hs +++ b/Mate/X86CodeGen.hs @@ -285,6 +285,7 @@ emitFromBB method sig cls hmap = do emit IDIV = do pop ebx; pop eax; xor edx edx; div ebx; push eax emit IREM = do pop ebx; pop eax; xor edx edx; div ebx; push edx emit IXOR = do pop ebx; pop eax; xor eax ebx; push eax + emit IUSHR = do pop ecx; pop eax; sar eax cl; push eax emit INEG = do pop eax; neg eax; push eax emit (IINC x imm) = add (Disp (cArgs x), ebp) (s8_w32 imm) diff --git a/tests/Shift1.java b/tests/Shift1.java new file mode 100644 index 0000000..8af8804 --- /dev/null +++ b/tests/Shift1.java @@ -0,0 +1,8 @@ +package tests; + +public class Shift1 { + public static void main(String []args) { + int s = 0x1000; + System.out.printf("shifted: %d\n", s >>> 4); + } +} -- 2.25.1