|
|
|
@ -208,7 +208,7 @@ namespace x86Emitter
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// JMP / Jcc Instructions!
|
|
|
|
|
|
|
|
|
|
extern void xJcc( JccComparisonType comparison, void* target );
|
|
|
|
|
extern void xJcc( JccComparisonType comparison, const void* target );
|
|
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
|
// Conditional jumps to fixed targets.
|
|
|
|
@ -217,30 +217,30 @@ namespace x86Emitter
|
|
|
|
|
// the target (efficient!)
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
template< typename T > __forceinline void xJE(T* func ) { xJcc( Jcc_Equal, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJZ(T* func ) { xJcc( Jcc_Zero, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNE(T* func ) { xJcc( Jcc_NotEqual, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNZ(T* func ) { xJcc( Jcc_NotZero, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJE( T* func ) { xJcc( Jcc_Equal, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJZ( T* func ) { xJcc( Jcc_Zero, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNE( T* func ) { xJcc( Jcc_NotEqual, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNZ( T* func ) { xJcc( Jcc_NotZero, (void*)(uptr)func ); }
|
|
|
|
|
|
|
|
|
|
template< typename T > __forceinline void xJO(T* func ) { xJcc( Jcc_Overflow, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNO(T* func ) { xJcc( Jcc_NotOverflow, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJC(T* func ) { xJcc( Jcc_Carry, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNC(T* func ) { xJcc( Jcc_NotCarry, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJS(T* func ) { xJcc( Jcc_Signed, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNS(T* func ) { xJcc( Jcc_Unsigned, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJO( T* func ) { xJcc( Jcc_Overflow, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNO( T* func ) { xJcc( Jcc_NotOverflow, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJC( T* func ) { xJcc( Jcc_Carry, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNC( T* func ) { xJcc( Jcc_NotCarry, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJS( T* func ) { xJcc( Jcc_Signed, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJNS( T* func ) { xJcc( Jcc_Unsigned, (void*)(uptr)func ); }
|
|
|
|
|
|
|
|
|
|
template< typename T > __forceinline void xJPE(T* func ) { xJcc( Jcc_ParityEven, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJPO(T* func ) { xJcc( Jcc_ParityOdd, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJPE( T* func ) { xJcc( Jcc_ParityEven, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJPO( T* func ) { xJcc( Jcc_ParityOdd, (void*)(uptr)func ); }
|
|
|
|
|
|
|
|
|
|
template< typename T > __forceinline void xJL(T* func ) { xJcc( Jcc_Less, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJLE(T* func ) { xJcc( Jcc_LessOrEqual, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJG(T* func ) { xJcc( Jcc_Greater, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJGE(T* func ) { xJcc( Jcc_GreaterOrEqual, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJL( T* func ) { xJcc( Jcc_Less, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJLE( T* func ) { xJcc( Jcc_LessOrEqual, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJG( T* func ) { xJcc( Jcc_Greater, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJGE( T* func ) { xJcc( Jcc_GreaterOrEqual, (void*)(uptr)func ); }
|
|
|
|
|
|
|
|
|
|
template< typename T > __forceinline void xJB(T* func ) { xJcc( Jcc_Below, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJBE(T* func ) { xJcc( Jcc_BelowOrEqual, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJA(T* func ) { xJcc( Jcc_Above, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJAE(T* func ) { xJcc( Jcc_AboveOrEqual, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJB( T* func ) { xJcc( Jcc_Below, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJBE( T* func ) { xJcc( Jcc_BelowOrEqual, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJA( T* func ) { xJcc( Jcc_Above, (void*)(uptr)func ); }
|
|
|
|
|
template< typename T > __forceinline void xJAE( T* func ) { xJcc( Jcc_AboveOrEqual, (void*)(uptr)func ); }
|
|
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
|
// Forward Jump Helpers (act as labels!)
|
|
|
|
|