diff options
Diffstat (limited to 'asm.peg')
| -rw-r--r-- | asm.peg | 66 |
1 files changed, 34 insertions, 32 deletions
@@ -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 |
