Class: Udb::Instruction::EncodingField
- Inherits:
-
Object
- Object
- Udb::Instruction::EncodingField
- 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
-
#name ⇒ Object
readonly
name, which corresponds to a name used in riscv_opcodes.
-
#range ⇒ Object
readonly
range in the encoding.
Instance Method Summary collapse
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(name, range, pretty = nil) ⇒ EncodingField
constructor
A new instance of EncodingField.
-
#opcode? ⇒ Boolean
is this encoding field a fixed opcode?.
- #pretty_to_s ⇒ Object
- #size ⇒ Object
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
#name ⇒ Object (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 |
#range ⇒ Object (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
591 592 593 |
# File 'lib/udb/obj/instruction.rb', line 591 def eql?(other) @name == other.name && @range == other.range end |
#hash ⇒ Object
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?
586 587 588 |
# File 'lib/udb/obj/instruction.rb', line 586 def opcode? name.match?(/^[01]+$/) end |
#pretty_to_s ⇒ Object
599 600 601 602 603 |
# File 'lib/udb/obj/instruction.rb', line 599 def pretty_to_s return @pretty unless @pretty.nil? @name end |
#size ⇒ Object
605 606 607 |
# File 'lib/udb/obj/instruction.rb', line 605 def size @range.size end |