File: [local] / OpenXM_contrib / pari / src / kernel / ix86 / Attic / l0asm.h (download)
Revision 1.1.1.1 (vendor branch), Sun Jan 9 17:35:32 2000 UTC (24 years, 6 months ago) by maekawa
Branch: PARI_GP
CVS Tags: maekawa-ipv6, VERSION_2_0_17_BETA, RELEASE_20000124, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, RELEASE_1_1_3, RELEASE_1_1_2 Changes since 1.1: +0 -0
lines
Import PARI/GP 2.0.17 beta.
|
#ifdef _MSC_VER
# define C(entrypoint) entrypoint
# define L(label) L##label
#else
# ifdef ASM_UNDERSCORE
# if defined(__STDC__) || defined(__cplusplus)
# define C(entrypoint) _##entrypoint
# define L(label) L##label
# else
# define C(entrypoint) _/**/entrypoint
# define L(label) L/**/label
# endif
# else
# define C(entrypoint) entrypoint
# if defined(__STDC__) || defined(__cplusplus)
# define L(label) .L##label
# else
# define L(label) .L/**/label
# endif
# endif
#endif
#ifdef _MSC_VER
# define INTEL_SYNTAX
#else
# ifdef ASM_UNDERSCORE
# define BSD_SYNTAX
# else
# define ELF_SYNTAX
# endif
#endif
#if defined (BSD_SYNTAX) || defined (ELF_SYNTAX)
# define R(r) %r
# define NUM(n) $##n
# define ADDR(a) $##a
# define X1
# define X2
# define X4
# define X8
# define MEM(base)(R(base))
# define MEM_DISP(base,displacement)displacement(R(base))
# define MEM_INDEX(base,index)(R(base),R(index))
# define MEM_SHINDEX(base,index,size)(R(base),R(index),size)
# define MEM_DISP_SHINDEX0(displacement,index,size)displacement(,R(index),size)
# define MEM_DISP_SHINDEX(base,displacement,index,size)displacement(R(base),R(index),size)
# define INDIR(value)*value
# define INSNCONC(mnemonic,size_suffix)mnemonic##size_suffix
# define INSN1(mnemonic,size_suffix,dst)INSNCONC(mnemonic,size_suffix) dst
# define INSN2(mnemonic,size_suffix,src,dst)INSNCONC(mnemonic,size_suffix) src,dst
# define INSN2MOVX(mnemonic,size_suffix,src,dst)INSNCONC(INSNCONC(mnemonic,size_suffix),l) src,dst
# if defined(BSD_SYNTAX) || defined(COHERENT)
# define INSN2SHCL(mnemonic,size_suffix,src,dst)INSNCONC(mnemonic,size_suffix) R(cl),src,dst
# define REPZ repe ;
# else
# define INSN2SHCL(mnemonic,size_suffix,src,dst)INSNCONC(mnemonic,size_suffix) src,dst
# define REPZ repz ;
# endif
# define REP rep ;
# if defined(BSD_SYNTAX) && !(defined(__CYGWIN32__) || defined(__MINGW32__))
# define ALIGN(log) .align log,0x90
# endif
# if defined(ELF_SYNTAX) || defined(__CYGWIN32__) || defined(__MINGW32__)
# define ALIGN(log) .align 1<<(log)
# endif
#endif
#ifdef INTEL_SYNTAX
# define R(r) r
# define NUM(n) n
# define ADDR(a) OFFSET a
# define X1 BYTE PTR
# define X2 WORD PTR
# define X4 DWORD PTR
# define X8 QWORD PTR
# define MEM(base) [base]
# define MEM_DISP(base,displacement) [base+(displacement)]
# define MEM_INDEX(base,index) [base+index]
# define MEM_SHINDEX(base,index,size) [base+index*size]
# define MEM_DISP_SHINDEX0(displacement,index,size) [(displacement)+index*size]
# define MEM_DISP_SHINDEX(base,displacement,index,size) [base+(displacement)+index*size]
# define INDIR(value)value
# define INSNCONC(mnemonic,suffix)mnemonic##suffix
# define INSN1(mnemonic,size_suffix,dst)mnemonic dst
# define INSN2(mnemonic,size_suffix,src,dst)mnemonic dst,src
# define INSN2MOVX(mnemonic,size_suffix,src,dst)INSNCONC(mnemonic,x) dst,src
# define INSN2SHCL(mnemonic,size_suffix,src,dst)mnemonic dst,src,R(cl)
# define REPZ repz
# define REP rep
# define movsl movs R(eax)
# define stosl stos R(eax)
# define scasl scas R(eax)
# define cmpsl cmpsd
# ifdef _MSC_VER
# define ALIGN(log)
# else
# define ALIGN(log) .align log
# endif
#endif
#ifdef _MSC_VER
# define TEXT()
# define GLOBL(name)
# define FUNBEGIN(name) __declspec(naked) void name () { __asm {
# define FUNEND() } }
#else
# define TEXT() .text
# define GLOBL(name) .globl name
# define FUNBEGIN(name) C(name##:)
# define FUNEND()
#endif
#define _
TEXT()