
                        Ŀ
                        XS Inline Assembler
                        

    With XS inline assembler, you can write assembler code directly inside
  your programs.

    You can write ASM instructions using the 'asm' token ('asm' keyword or
  $ character). Example : You want to write the assembler instruction
  mov eax,ebx. You can either write :

       asm mov eax,ebx

            or

       $mov eax,ebx

    If you want to include more ASM instructions, you can place them into a
  block :

       asm {
              mov al,20h
              out 20h,al
           }

    If you make a function that is using only ASM instructions, you can place
  an 'asm' token before the function block :

      irq0()
      asm{
        push eax
        mov al,20h
        out 20h,al
        pop eax
        iretd
      }



  This is the list of the assembler instructions accepted by the compiler :

         Common instructions (8086 - 486)
         

AAA
AAS
ADC
ADD
AND
ARPL
BOUND
BSF
BSR
BSWAP
BT
BTC
BTR
BTS
CALL
CDQ
CLC
CLD
CLI
CLTS
CMC
CMP
CMPXCHG
CWDE
DAA
DAS
DIV
ENTER
FWAIT
HLT
IDIV
IMUL
IN
INSB
INSD
INT
INTO
INVLPG
IRET
IRETD
JMP
JX (JO,JNO...) - Conditional jumps
LAHF
LAR
LDS
LEA
LEAVE
LES
LFS
LGDT
LGS
LIDT
LLDT
LMSW
LOCK
LODSB
LODSD
LOOP
LOOPE/LOOPZ
LOOPNE/LOOPNZ
LSL
LSS
LTR
MOV
MOVSB
MOVSD
MOVSX
MOVZX
MUL
NEG
NOP
NOT
OR
OUT
OUTSB
OUTSD
POPA
POPAD
POPF
POPFD
PUSHA
PUSHAD
PUSHF
PUSHFD
RCL
RCR
REP
REPE
REPNE
REPNZ
REPZ
RET
RETF
ROL
ROR
SAHF
SAL
SAR
SBB
SCASB
SCASD
SETALC
SETX(SETO,SETNO...)
SGDT
SHL
SHLD
SHR
SHRD
SIDT
SLDT
SMSW
STC
STD
STI
STOSD
STR
SUB
VERR
VERW
WAIT
XADD
XLAT
XOR

      Pentium+ instructions
      

CMPXCHG8B
RDMSR
RDTSC
WRMSR


      Pentium Pro+ instructions
      

CMOVx(CMOVZ,CMOVC,...) - Conditional move
FCMOVx(FCMOVZ,FCMOVC,...) - FP Conditional move
FCOMI     - FP compare and store results in EFLAGS
FUCOMI
FCOMIP
FUCOMIP
RDPMC    -read performance monitor counter
UD2


      FPU instructions
      

FNSTSW
FNSTDW
FSTSG
FNOP
FCHS
FLD1
F2XM1
FPREM
FABS
FLDL2T
FYL2X
FYL2XP1
FLDL2E
FPTAN
FSQRT
FLDPI
FPATAN
FSINCOS
FTST
FLDLG2
FXTRACT
FRNDINT
FXAM
FLDLN2
FPREM1
FSCALE
FLDZ
FDECSTP
FSIN
FINCSTP
FCOS
FLD
FILD
FBLD
FST
FSTP
FIST
FISTP
FBSTP
FIADD
FIMUL
FICOM
FICOMP
FISUB
FISUBR
FIDIV
FIDIVR
FADDP
FMULP
FCOMP
FSUBP
FSUBRP
FDIVP
FDIVRP
FFREE
FXCH
FUCOM
FUCOMP
FCOM
FADD
FSUB
FMUL
FSUBR
FDIV
FDIVR
FINIT
FCLEX
FSTSW
FLDCW
FSTCW
FSTENV
FLDENV
FSAVE
FRSTOR
FCOMPP


      MMX instructions
      

EMMS
MOVD
MOVQ
PACKSSWB
PACKSSDW
PACKUSWB
PADDB
PADDD
PADDSB
PADDSW
PADDUSB
PADDUSW
PADDW
PAND
PANDN
PCMGTB
PCMGTD
PCMGTW
PCMPEQB
PCMPEQD
PCMPEQW
PMADDWD
PMULHW
PMULLW
POR
PSLLD
PSLLQ
PSLLW
PSRAD
PSRAW
PSRLD
PSRLQ
PSRLW
PSUBB
PSUBD
PSUBSB
PSUBSW
PSUBUSB
PSUBUSW
PSUBW
PUNPCKHBW
PUNPCKHDQ
PUNPCKHWD
PUNPCKLBW
PUNPCKLDQ
PUNPCKLWD
PXOR



      3D-NOW! instructions
      

PREFETCH
PREFETCHW
FEMMS
PF2ID
PI2FD
PFACC
PFADD
PFCMPEQ
PFCMPGE
PFCMPGT
PFMAX
PFMIN
PFMUL
PFRCP
PFRCPIT1
PFRCPIT2
PFRSQRT
PFRSQIT1
PFSUB
PFSUBR
PAVGUSB
PMULHRW