Class: Ragweed::Rasm::Test

Inherits:
Instruction show all
Defined in:
lib/ragweed/rasm/isa.rb

Overview

Test is AND + condition code

Instance Attribute Summary

Attributes inherited from Instruction

#dst, #src

Instance Method Summary collapse

Methods inherited from Instruction

#add, #coerce, #decode, #dst_imm?, #dst_lab?, #dst_reg?, i, #locate, #modrm, #patch, #sib, #src_imm?, #src_lab?, #src_reg?

Constructor Details

#initialize(dst = nil, src = nil) ⇒ Test

a8 imm8 a9 imm f7/0, r/m 85 r/m, r



643
# File 'lib/ragweed/rasm/isa.rb', line 643

def initialize( dst=nil, src=nil); super(dst,src); end

Instance Method Details

#to_sObject



645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
# File 'lib/ragweed/rasm/isa.rb', line 645

def to_s
  if not @dst
    raise(BadArg, "need imm for implied ax") if not src_imm?
    if @src.val < 0x100
      add(0xa8)
      add(@src.val)
    else
      add(0xa9)
      add(@src.val)
    end
  else
    if src_imm?
      add(0xf7)
      add(modrm(@dst.val, Eax.clone))
      add(@src.val)
    else
      add(0x85)
      add(modrm(@dst.val, @src))
    end
  end
  super
end