
macro xbegin? dest*
	x86.parse_jump_operand@dest dest
	if @dest.type = 'imm' & ~ @dest.jump_type
		if x86.mode shr 3 <> @dest.size
			err 'invalid operand size'
		end if
		if x86.mode = 16
			db 0C7h,0F8h
			dw @dest.imm-($+2)
		else
			if ~ $ relativeto 0 & @dest.imm relativeto 0
				@dest.imm = @dest.imm + $ - 0 scaleof $
				err 'invalid address'
			end if
			if @dest.unresolved | ( @dest.imm relativeto $ & @dest.imm-($+5) < 8000h & @dest.imm-($+5) >= -8000h )
				db 66h,0C7h,0F8h
				dw @dest.imm-($+2)
			else
				db 0C7h,0F8h
				dd @dest.imm-($+4)
			end if
		end if
	else
		err 'invalid operand'
	end if
end macro

macro xabort? imm*
	db 0C6h,0F8h,imm
end macro

macro xend?
	db 0Fh,1,0D5h
end macro

macro xtest?
	db 0Fh,1,0D6h
end macro
