Add subtract and logical instruction encodings to Intel-32.
Also add versions with 8-bit and 32-bit immediate operands.
This commit is contained in:
@@ -4,10 +4,24 @@ Intel Encodings.
|
||||
from __future__ import absolute_import
|
||||
from base import instructions as base
|
||||
from .defs import I32
|
||||
from .recipes import Op1rr, Op1rc
|
||||
from .recipes import Op1rr, Op1rc, Op1rib, Op1rid
|
||||
from .recipes import OP
|
||||
|
||||
I32.enc(base.iadd.i32, Op1rr, OP(0x01))
|
||||
I32.enc(base.isub.i32, Op1rr, OP(0x29))
|
||||
|
||||
I32.enc(base.band.i32, Op1rr, OP(0x21))
|
||||
I32.enc(base.bor.i32, Op1rr, OP(0x09))
|
||||
I32.enc(base.bxor.i32, Op1rr, OP(0x31))
|
||||
|
||||
# Immediate instructions with sign-extended 8-bit and 32-bit immediate.
|
||||
for inst, r in [
|
||||
(base.iadd_imm.i32, 0),
|
||||
(base.band_imm.i32, 4),
|
||||
(base.bor_imm.i32, 1),
|
||||
(base.bxor_imm.i32, 6)]:
|
||||
I32.enc(inst, Op1rib, OP(0x83, rrr=r))
|
||||
I32.enc(inst, Op1rid, OP(0x81, rrr=r))
|
||||
|
||||
# 32-bit shifts and rotates.
|
||||
# Note that the dynamic shift amount is only masked by 5 or 6 bits; the 8-bit
|
||||
|
||||
Reference in New Issue
Block a user