Class: Udb::Instruction::EncodingField

Inherits:
Object
  • Object
show all
Defined in:
lib/udb/obj/instruction.rb

Overview

represents a single contiguous instruction encoding field Multiple EncodingFields may make up a single DecodeField, e.g., when an immediate is split across multiple locations

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, range, pretty = nil) ⇒ EncodingField

Returns a new instance of EncodingField.



579
580
581
582
583
# File 'lib/udb/obj/instruction.rb', line 579

def initialize(name, range, pretty = nil)
  @name = name
  @range = range
  @pretty = pretty
end

Instance Attribute Details

#nameObject (readonly)

name, which corresponds to a name used in riscv_opcodes



574
575
576
# File 'lib/udb/obj/instruction.rb', line 574

def name
  @name
end

#rangeObject (readonly)

range in the encoding



577
578
579
# File 'lib/udb/obj/instruction.rb', line 577

def range
  @range
end

Instance Method Details

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


591
592
593
# File 'lib/udb/obj/instruction.rb', line 591

def eql?(other)
  @name == other.name && @range == other.range
end

#hashObject



595
596
597
# File 'lib/udb/obj/instruction.rb', line 595

def hash
  [@name, @range].hash
end

#opcode?Boolean

is this encoding field a fixed opcode?

Returns:

  • (Boolean)


586
587
588
# File 'lib/udb/obj/instruction.rb', line 586

def opcode?
  name.match?(/^[01]+$/)
end

#pretty_to_sObject



599
600
601
602
603
# File 'lib/udb/obj/instruction.rb', line 599

def pretty_to_s
  return @pretty unless @pretty.nil?

  @name
end

#sizeObject



605
606
607
# File 'lib/udb/obj/instruction.rb', line 605

def size
  @range.size
end