rubyx/lib/intel/special_register.rb

58 lines
1.1 KiB
Ruby

require 'intel/register'
require 'intel/operand'
module Intel
##
# SpecialRegister is the abstract implementation of any kind of
# register that isn't a general register, eg: segment registers, mmx
# registers, fpu registers, etc...
class SpecialRegister < Operand
attr_accessor :id
def initialize machine = nil, id = nil , bits = nil
super(machine,bits)
self.id = id
end
end
##
# DebugRegister is an X86 DRx register
class DebugRegister < SpecialRegister
end
##
# TestRegister is an X86 Test Register, TRx
class TestRegister < SpecialRegister
end
##
# FPURegister is an X86 fpureg, STx
class FPURegister < SpecialRegister
end
##
# ControlRegister is an X86 CRx register
class ControlRegister < SpecialRegister
end
##
# MMXRegister is an X86 MMX register
class MMXRegister < SpecialRegister
def push_mod_rm_on spareRegister, stream
stream << (0b11000000 + id + (spareRegister.id << 3))
end
end
##
# SegmentRegister is an X86 segment register, eg: ss, cs, ds, es...
class SegmentRegister < SpecialRegister
end
end