Class: Udb::Instruction::Encoding::Field

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

Overview

represents an encoding field (contiguous set of bits that form an opcode or decode variable slot)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, range) ⇒ Field

Returns a new instance of Field.

Parameters:

  • name (#to_s)

    Either string of 0’s and 1’s or a bunch of dashes

  • range (Range)

    Range of the field in the encoding



865
866
867
868
# File 'lib/udb/obj/instruction.rb', line 865

def initialize(name, range)
  @name = name.to_s
  @range = range
end

Instance Attribute Details

#nameString (readonly)

Returns Either string of 0’s and 1’s or a bunch of dashes.

Examples:

Field of a decode variable

encoding.opcode_fields[0] #=> '-----' (for imm5)

Field of an opcode

encoding.opcode_fields[1] #=> '0010011' (for funct7)

Returns:

  • (String)

    Either string of 0’s and 1’s or a bunch of dashes



858
859
860
# File 'lib/udb/obj/instruction.rb', line 858

def name
  @name
end

#rangeRange (readonly)

Returns Range of bits in the parent corresponding to this field.

Returns:

  • (Range)

    Range of bits in the parent corresponding to this field



861
862
863
# File 'lib/udb/obj/instruction.rb', line 861

def range
  @range
end

Instance Method Details

#opcode?Boolean

Returns whether or not the field represents part of the opcode (i.e., not a decode variable).

Returns:

  • (Boolean)

    whether or not the field represents part of the opcode (i.e., not a decode variable)



871
872
873
# File 'lib/udb/obj/instruction.rb', line 871

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

#to_sObject



875
876
877
# File 'lib/udb/obj/instruction.rb', line 875

def to_s
  "#{name}[#{range}]"
end