class Metasm::ARM64::RegShift

Attributes

mode[RW]
reg[RW]
shift[RW]

Public Class Methods

new(reg, mode, shift) click to toggle source
# File metasm/cpu/arm64/main.rb, line 38
def initialize(reg, mode, shift)
        @reg = reg
        @mode = mode
        @shift = shift
end

Public Instance Methods

render() click to toggle source
# File metasm/cpu/arm64/render.rb, line 20
def render
        case @mode
        when :lsl, :lsr, :asr
                if shift == 0
                        [@reg]
                else
                        case @mode
                        when :lsl; [@reg, ' LSL ', Expression[shift]]
                        when :lsr; [@reg, ' LSR ', Expression[shift]]
                        when :asr; [@reg, ' ASR ', Expression[shift]]
                        end
                end
        else
                sh = []
                sh << ' LSL ' << Expression[shift] if shift != 0
                [ @mode.to_s, '( ', @reg, ' )', *sh ]
        end
end
symbolic(di=nil) click to toggle source
# File metasm/cpu/arm64/main.rb, line 44
def symbolic(di=nil)
        sym = @reg.symbolic
        if shift != 0
                case @mode
                when :lsl; Expression[sym, :<<, shift]
                when :lsr; Expression[sym, :>>, shift]
                when :asr; Expression[sym, :>>, shift]      # signextend
                end
        end
        sym
end