[BACK]Return to l0asm.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari-2.2 / src / kernel / ix86

Annotation of OpenXM_contrib/pari-2.2/src/kernel/ix86/l0asm.h, Revision 1.1.1.1

1.1       noro        1: /* $Id: l0asm.h,v 1.2 2000/11/03 21:00:25 karim Exp $
                      2:
                      3: Copyright (C) 2000  The PARI group.
                      4:
                      5: This file is part of the PARI/GP package.
                      6:
                      7: PARI/GP is free software; you can redistribute it and/or modify it under the
                      8: terms of the GNU General Public License as published by the Free Software
                      9: Foundation. It is distributed in the hope that it will be useful, but WITHOUT
                     10: ANY WARRANTY WHATSOEVER.
                     11:
                     12: Check the License for details. You should have received a copy of it, along
                     13: with the package; see the file 'COPYING'. If not, write to the Free Software
                     14: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
                     15:
                     16: #ifdef _MSC_VER
                     17: #  define C(entrypoint) entrypoint
                     18: #  define L(label) L##label
                     19: #else
                     20: #  ifdef ASM_UNDERSCORE
                     21: #    if defined(__STDC__) || defined(__cplusplus)
                     22: #      define C(entrypoint) _##entrypoint
                     23: #      define L(label) L##label
                     24: #    else
                     25: #      define C(entrypoint) _/**/entrypoint
                     26: #      define L(label) L/**/label
                     27: #    endif
                     28: #  else
                     29: #    define C(entrypoint) entrypoint
                     30: #    if defined(__STDC__) || defined(__cplusplus)
                     31: #      define L(label) .L##label
                     32: #    else
                     33: #      define L(label) .L/**/label
                     34: #    endif
                     35: #  endif
                     36: #endif
                     37:
                     38: #ifdef _MSC_VER
                     39: #  define INTEL_SYNTAX
                     40: #else
                     41: #  ifdef ASM_UNDERSCORE
                     42: #    define BSD_SYNTAX
                     43: #  else
                     44: #    define ELF_SYNTAX
                     45: #  endif
                     46: #endif
                     47:
                     48: #if defined (BSD_SYNTAX) || defined (ELF_SYNTAX)
                     49: #  define R(r) %r
                     50: #  define NUM(n) $##n
                     51: #  define ADDR(a) $##a
                     52: #  define X1
                     53: #  define X2
                     54: #  define X4
                     55: #  define X8
                     56: #  define MEM(base)(R(base))
                     57: #  define MEM_DISP(base,displacement)displacement(R(base))
                     58: #  define MEM_INDEX(base,index)(R(base),R(index))
                     59: #  define MEM_SHINDEX(base,index,size)(R(base),R(index),size)
                     60: #  define MEM_DISP_SHINDEX0(displacement,index,size)displacement(,R(index),size)
                     61: #  define MEM_DISP_SHINDEX(base,displacement,index,size)displacement(R(base),R(index),size)
                     62: #  define INDIR(value)*value
                     63: #  define INSNCONC(mnemonic,size_suffix)mnemonic##size_suffix
                     64: #  define INSN1(mnemonic,size_suffix,dst)INSNCONC(mnemonic,size_suffix) dst
                     65: #  define INSN2(mnemonic,size_suffix,src,dst)INSNCONC(mnemonic,size_suffix) src,dst
                     66: #  define INSN2MOVX(mnemonic,size_suffix,src,dst)INSNCONC(INSNCONC(mnemonic,size_suffix),l) src,dst
                     67: #  if defined(BSD_SYNTAX) || defined(COHERENT)
                     68: #    define INSN2SHCL(mnemonic,size_suffix,src,dst)INSNCONC(mnemonic,size_suffix) R(cl),src,dst
                     69: #    define REPZ repe ;
                     70: #  else
                     71: #    define INSN2SHCL(mnemonic,size_suffix,src,dst)INSNCONC(mnemonic,size_suffix) src,dst
                     72: #    define REPZ repz ;
                     73: #  endif
                     74: #  define REP rep ;
                     75: #  if defined(BSD_SYNTAX) && !(defined(__CYGWIN32__) || defined(__MINGW32__))
                     76: #    define ALIGN(log) .align log,0x90
                     77: #  endif
                     78: #  if defined(ELF_SYNTAX) || defined(__CYGWIN32__) || defined(__MINGW32__)
                     79: #    define ALIGN(log) .align 1<<(log)
                     80: #  endif
                     81: #endif
                     82:
                     83: #ifdef INTEL_SYNTAX
                     84: #  define R(r) r
                     85: #  define NUM(n) n
                     86: #  define ADDR(a) OFFSET a
                     87: #  define X1 BYTE PTR
                     88: #  define X2 WORD PTR
                     89: #  define X4 DWORD PTR
                     90: #  define X8 QWORD PTR
                     91: #  define MEM(base) [base]
                     92: #  define MEM_DISP(base,displacement) [base+(displacement)]
                     93: #  define MEM_INDEX(base,index) [base+index]
                     94: #  define MEM_SHINDEX(base,index,size) [base+index*size]
                     95: #  define MEM_DISP_SHINDEX0(displacement,index,size) [(displacement)+index*size]
                     96: #  define MEM_DISP_SHINDEX(base,displacement,index,size) [base+(displacement)+index*size]
                     97: #  define INDIR(value)value
                     98: #  define INSNCONC(mnemonic,suffix)mnemonic##suffix
                     99: #  define INSN1(mnemonic,size_suffix,dst)mnemonic dst
                    100: #  define INSN2(mnemonic,size_suffix,src,dst)mnemonic dst,src
                    101: #  define INSN2MOVX(mnemonic,size_suffix,src,dst)INSNCONC(mnemonic,x) dst,src
                    102: #  define INSN2SHCL(mnemonic,size_suffix,src,dst)mnemonic dst,src,R(cl)
                    103: #  define REPZ repz
                    104: #  define REP rep
                    105: #  define movsl  movs R(eax)
                    106: #  define stosl  stos R(eax)
                    107: #  define scasl  scas R(eax)
                    108: #  define cmpsl  cmpsd
                    109: #  ifdef _MSC_VER
                    110: #    define ALIGN(log)
                    111: #  else
                    112: #    define ALIGN(log) .align log
                    113: #  endif
                    114: #endif
                    115:
                    116: #ifdef _MSC_VER
                    117: #  define TEXT()
                    118: #  define GLOBL(name)
                    119: #  define FUNBEGIN(name) __declspec(naked) void name () { __asm {
                    120: #  define FUNEND()                                      }       }
                    121: #else
                    122: #  define TEXT() .text
                    123: #  define GLOBL(name) .globl name
                    124: #  define FUNBEGIN(name) C(name##:)
                    125: #  define FUNEND()
                    126: #endif
                    127:
                    128: #define _
                    129:
                    130: TEXT()

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>