metasm/cpu/x86_64/encode.rb in metasm-1.0.2 vs metasm/cpu/x86_64/encode.rb in metasm-1.0.3
- old
+ new
@@ -74,23 +74,25 @@
ret << fu
end
imm ||= 0 if @b.val_enc == 5
if imm
+ i32 = :i32
+ i32 = :a32 if (self.b and self.b.sz == 32) or (self.i and self.i.sz == 32)
case Expression.in_range?(imm, :i8)
when true
or_bits[1<<6]
[ret << Expression.encode_imm(imm, :i8, endianness)]
when false
or_bits[2<<6]
- [ret << Expression.encode_imm(imm, :a32, endianness)]
+ [ret << Expression.encode_imm(imm, i32, endianness)]
when nil
rets = ret.dup
or_bits[1<<6]
ret << @imm.encode(:i8, endianness)
rets, ret = ret, rets # or_bits[] modifies ret directly
or_bits[2<<6]
- ret << @imm.encode(:a32, endianness)
+ ret << @imm.encode(i32, endianness)
[ret, rets]
end
else
[ret]
end