From 8bc9e295a55ed41577e3a7dd516d4f9510a87469 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sun, 29 Mar 2009 23:25:05 +0000 Subject: Default memory size to "s" for no-suffix FP conversions in GAS syntax. Reported by: Gregory McGarry svn path=/trunk/yasm/; revision=2192 --- modules/arch/x86/gen_x86_insn.py | 16 ++ modules/arch/x86/tests/gas32/Makefile.inc | 2 + modules/arch/x86/tests/gas32/gas-fpmem.asm | 11 + modules/arch/x86/tests/gas32/gas-fpmem.hex | 376 +++++++++++++++++++++++++++++ 4 files changed, 405 insertions(+) create mode 100644 modules/arch/x86/tests/gas32/gas-fpmem.asm create mode 100644 modules/arch/x86/tests/gas32/gas-fpmem.hex diff --git a/modules/arch/x86/gen_x86_insn.py b/modules/arch/x86/gen_x86_insn.py index 271d3ffa..372454df 100755 --- a/modules/arch/x86/gen_x86_insn.py +++ b/modules/arch/x86/gen_x86_insn.py @@ -3096,6 +3096,14 @@ add_group("fildstp", opcode=[0xDD], spare=0, operands=[Operand(type="Mem", size=64, dest="EA")]) +# No-suffix alias for memory for GAS compat -> "s" version generated +add_group("fildstp", + cpu=["FPU"], + parsers=["gas"], + modifiers=["SpAdd"], + opcode=[0xDF], + spare=0, + operands=[Operand(type="Mem", size=16, relaxed=True, dest="EA")]) add_insn("fild", "fildstp", modifiers=[0, 2, 5]) add_insn("fistp", "fildstp", modifiers=[3, 2, 7]) @@ -3180,6 +3188,14 @@ add_group("fcom", modifiers=["Op1Add"], opcode=[0xD8, 0x00], operands=[Operand(type="Reg", size=80, dest="Op1Add")]) +# No-suffix alias for memory for GAS compat -> "s" version generated +add_group("fcom", + cpu=["FPU"], + parsers=["gas"], + modifiers=["Gap", "SpAdd"], + opcode=[0xD8], + spare=0, + operands=[Operand(type="Mem", size=32, relaxed=True, dest="EA")]) # Alias for fcom %st(1) for GAS compat add_group("fcom", cpu=["FPU"], diff --git a/modules/arch/x86/tests/gas32/Makefile.inc b/modules/arch/x86/tests/gas32/Makefile.inc index 80f22a40..10329f1d 100644 --- a/modules/arch/x86/tests/gas32/Makefile.inc +++ b/modules/arch/x86/tests/gas32/Makefile.inc @@ -7,6 +7,8 @@ EXTRA_DIST += modules/arch/x86/tests/gas32/align32.asm EXTRA_DIST += modules/arch/x86/tests/gas32/align32.hex EXTRA_DIST += modules/arch/x86/tests/gas32/gas-farithr.asm EXTRA_DIST += modules/arch/x86/tests/gas32/gas-farithr.hex +EXTRA_DIST += modules/arch/x86/tests/gas32/gas-fpmem.asm +EXTRA_DIST += modules/arch/x86/tests/gas32/gas-fpmem.hex EXTRA_DIST += modules/arch/x86/tests/gas32/gas-movdq32.asm EXTRA_DIST += modules/arch/x86/tests/gas32/gas-movdq32.hex EXTRA_DIST += modules/arch/x86/tests/gas32/gas-movsd.asm diff --git a/modules/arch/x86/tests/gas32/gas-fpmem.asm b/modules/arch/x86/tests/gas32/gas-fpmem.asm new file mode 100644 index 00000000..ca905308 --- /dev/null +++ b/modules/arch/x86/tests/gas32/gas-fpmem.asm @@ -0,0 +1,11 @@ +.text +fcomp +fcomp %st(1) +fcomp 0(%eax) +fcomps 0(%eax) +fcompl 0(%eax) + +fistp 0(%eax) +fistps 0(%eax) +fistpl 0(%eax) + diff --git a/modules/arch/x86/tests/gas32/gas-fpmem.hex b/modules/arch/x86/tests/gas32/gas-fpmem.hex new file mode 100644 index 00000000..81d6a3a0 --- /dev/null +++ b/modules/arch/x86/tests/gas32/gas-fpmem.hex @@ -0,0 +1,376 @@ +7f +45 +4c +46 +01 +01 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +01 +00 +03 +00 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b0 +00 +00 +00 +00 +00 +00 +00 +34 +00 +00 +00 +00 +00 +28 +00 +05 +00 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d8 +d9 +d8 +d9 +d8 +18 +d8 +18 +dc +18 +df +18 +df +18 +db +18 +00 +2e +74 +65 +78 +74 +00 +2e +73 +74 +72 +74 +61 +62 +00 +2e +73 +79 +6d +74 +61 +62 +00 +2e +73 +68 +73 +74 +72 +74 +61 +62 +00 +00 +00 +00 +00 +2d +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +04 +00 +f1 +ff +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +03 +00 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +17 +00 +00 +00 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +50 +00 +00 +00 +21 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +07 +00 +00 +00 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +74 +00 +00 +00 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0f +00 +00 +00 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +78 +00 +00 +00 +30 +00 +00 +00 +02 +00 +00 +00 +03 +00 +00 +00 +04 +00 +00 +00 +10 +00 +00 +00 +01 +00 +00 +00 +01 +00 +00 +00 +06 +00 +00 +00 +00 +00 +00 +00 +40 +00 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 -- cgit v1.2.1