aboutsummaryrefslogtreecommitdiff
path: root/asm.peg
diff options
context:
space:
mode:
Diffstat (limited to 'asm.peg')
-rw-r--r--asm.peg66
1 files changed, 34 insertions, 32 deletions
diff --git a/asm.peg b/asm.peg
index e922a83..f5abbfb 100644
--- a/asm.peg
+++ b/asm.peg
@@ -97,38 +97,40 @@ instr =
| i:cltd { $$ = i; }
| i:cqto { $$ = i; }))
| (& 's'
- (
- i:set { $$ = i; }
- | i:sub { $$ = i; }
- | i:sal { $$ = i; }
- | i:sar { $$ = i; }
- | i:shl { $$ = i; }
- | i:shr { $$ = i; }
- | i:subsd { $$ = i; }
- | i:subss { $$ = i; }))
- | i:or { $$ = i; }
- | i:leave { $$ = i; }
- | i:ret { $$ = i; }
- | i:push { $$ = i; }
- | i:pop { $$ = i; }
- | i:jmp { $$ = i; }
- | i:div { $$ = i; }
- | i:idiv { $$ = i; }
- | i:lea { $$ = i; }
- | i:imul { $$ = i; }
- | i:neg { $$ = i; }
- | i:test { $$ = i; }
- | i:xchg { $$ = i; }
- | i:xor { $$ = i; }
- # Floating point is less common, so check last.
- | i:divss { $$ = i; }
- | i:divsd { $$ = i; }
- | i:pxor { $$ = i; }
- | i:xorpd { $$ = i; }
- | i:xorps { $$ = i; }
- | i:ucomisd { $$ = i; }
- | i:ucomiss { $$ = i; }
- | i:nop { $$ = i; }
+ (
+ i:set { $$ = i; }
+ | i:sub { $$ = i; }
+ | i:sal { $$ = i; }
+ | i:sar { $$ = i; }
+ | i:shl { $$ = i; }
+ | i:shr { $$ = i; }
+ | i:subsd { $$ = i; }
+ | i:subss { $$ = i; }))
+ | (& 'x'
+ (
+ i:xchg { $$ = i; }
+ | i:xor { $$ = i; }
+ | i:xorpd { $$ = i; }
+ | i:xorps { $$ = i; } ))
+ | i:or { $$ = i; }
+ | i:leave { $$ = i; }
+ | i:ret { $$ = i; }
+ | i:push { $$ = i; }
+ | i:pop { $$ = i; }
+ | i:jmp { $$ = i; }
+ | i:div { $$ = i; }
+ | i:idiv { $$ = i; }
+ | i:lea { $$ = i; }
+ | i:imul { $$ = i; }
+ | i:neg { $$ = i; }
+ | i:test { $$ = i; }
+ # Floating point is less common, so check last.
+ | i:divss { $$ = i; }
+ | i:divsd { $$ = i; }
+ | i:pxor { $$ = i; }
+ | i:ucomisd { $$ = i; }
+ | i:ucomiss { $$ = i; }
+ | i:nop { $$ = i; }
call = "call" 'q'? ws (
'*' t:mem