25 lines
501 B
C++
25 lines
501 B
C++
|
|
iterate <instr,postbyte>, rdfsbase,0, rdgsbase,1, wrfsbase,2, wrgsbase,3
|
|
|
|
macro instr? dest*
|
|
if x86.mode = 64
|
|
x86.parse_operand@dest dest
|
|
if @dest.type = 'reg'
|
|
if @dest.size >= 4
|
|
@dest.opcode_prefix = 0F3h
|
|
x86.select_operand_prefix@dest @dest.size
|
|
x86.store_instruction@dest <0Fh,0AEh>,postbyte
|
|
else
|
|
err 'invalid operand size'
|
|
end if
|
|
else
|
|
err 'invalid operand'
|
|
end if
|
|
else
|
|
err 'instruction requires long mode'
|
|
end if
|
|
end macro
|
|
|
|
end iterate
|
|
|