mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-29 01:28:34 +02:00

U rtl/objpas/sysutils/dati.inc U rtl/objpas/sysutils/syssbh.inc U rtl/objpas/sysutils/sysstrh.inc U rtl/objpas/sysutils/filutil.inc U rtl/objpas/sysutils/syshelp.inc U rtl/arm/mathu.inc U rtl/win/wininc/redef.inc U rtl/win/systhrd.inc U rtl/aarch64/math.inc U rtl/linux/ossysc.inc U rtl/linux/ostypes.inc U rtl/linux/system.pp U rtl/linux/m68k/sysnr.inc U rtl/linux/m68k/gprt0.as U rtl/linux/m68k/gprt21.as U rtl/objpas/sysutils/datih.inc U rtl/objpas/sysconst.pp U rtl/win/sysutils.pp U rtl/win/wininc/struct.inc U rtl/aarch64/mathu.inc U rtl/linux/m68k/sighnd.inc D rtl/linux/m68k/cprt21.as U rtl/linux/riscv64/si_c.inc U rtl/linux/riscv64/si_prc.inc U rtl/linux/xtensa/si_c.inc U rtl/linux/xtensa/si_prc.inc U rtl/linux/Makefile U rtl/linux/t_linux.h2paschk U rtl/linux/arm/sysnr.inc U rtl/linux/i386/sysnr.inc U rtl/linux/i386/sighnd.inc U rtl/linux/powerpc/sysnr.inc U rtl/linux/powerpc64/sysnr.inc U rtl/linux/sparcgen/sysnr.inc U rtl/linux/x86_64/sysnr.inc U rtl/linux/x86_64/sighnd.inc U rtl/linux/Makefile.fpc U rtl/objpas/classes/classesh.inc U rtl/objpas/classes/streams.inc U rtl/objpas/classes/classes.inc U rtl/objpas/sysutils/syssb.inc U rtl/objpas/sysutils/sysstr.inc A rtl/objpas/sysutils/tzenv.inc U rtl/objpas/sysutils/filutilh.inc U rtl/objpas/sysutils/syshelph.inc U rtl/win/syswin.inc U rtl/win/wininc/base.inc U rtl/win/sysfile.inc U rtl/aarch64/aarch64.inc U rtl/i386/cpu.pp U rtl/powerpc/mathu.inc U rtl/i386/mathu.inc U rtl/mips/mathu.inc U rtl/m68k/mathu.inc U rtl/riscv64/mathu.inc U rtl/i8086/mathu.inc U rtl/powerpc64/mathu.inc U rtl/sparc64/mathu.inc U rtl/xtensa/mathu.inc U rtl/inc/genmath.inc U rtl/inc/ustrings.inc U rtl/inc/text.inc U rtl/inc/ufloatx80.pp U rtl/inc/except.inc U rtl/freertos/xtensa/esp8266.pp U rtl/unix/sysutils.pp U rtl/sparc/mathu.inc U rtl/x86_64/math.inc U rtl/inc/gencurr.inc U rtl/inc/ustringh.inc U rtl/inc/file.inc U rtl/inc/ufloat128.pp U rtl/inc/threadvr.inc U rtl/darwin/Makefile.fpc U rtl/unix/dos.pp U rtl/x86_64/cpu.pp U rtl/inc/currh.inc U rtl/inc/systemh.inc U rtl/inc/threadh.inc U rtl/inc/textrec.inc U rtl/inc/iso7185.pp U rtl/darwin/Makefile U rtl/unix/cwstring.pp U rtl/x86_64/mathu.inc U rtl/inc/astrings.inc U rtl/inc/system.inc U rtl/inc/thread.inc U rtl/inc/filerec.inc U rtl/inc/softfpu.pp U rtl/darwin/aarch64/sighnd.inc U rtl/freertos/Makefile U rtl/unix/unixutil.pp U rtl/unix/cthreads.pp U rtl/unix/unix.pp U rtl/unix/bunxovl.inc U rtl/unix/timezone.inc U rtl/unix/scripts/check_rtl_types.sh U rtl/aix/Makefile.fpc U rtl/aros/Makefile U rtl/beos/Makefile U rtl/bsd/sysos.inc U rtl/emx/Makefile.fpc U rtl/go32v2/Makefile U rtl/haiku/x86_64/sighnd.inc U rtl/morphos/Makefile U rtl/msdos/Makefile U rtl/aix/Makefile U rtl/amiga/buildrtl.pp U rtl/atari/Makefile U rtl/beos/Makefile.fpc U rtl/emx/Makefile U rtl/go32v2/v2prt0.as U rtl/haiku/i386/sighnd.inc U rtl/macos/Makefile.fpc U rtl/msdos/sysutils.pp U rtl/amiga/Makefile.fpc U rtl/aros/buildrtl.pp U rtl/beos/i386/sighnd.inc U rtl/emx/sysutils.pp U rtl/go32v2/sysutils.pp U rtl/haiku/Makefile U rtl/macos/Makefile U rtl/morphos/buildrtl.pp U rtl/amiga/Makefile U rtl/aros/Makefile.fpc U rtl/beos/bethreads.pp U rtl/embedded/Makefile U rtl/gba/Makefile U rtl/go32v2/Makefile.fpc U rtl/haiku/Makefile.fpc U rtl/morphos/Makefile.fpc U rtl/msxdos/Makefile A rtl/sinclairql U rtl/nativent/buildrtl.pp U rtl/nativent/Makefile.fpc U rtl/nativent/Makefile U rtl/netware/Makefile U rtl/nds/Makefile U rtl/netware/Makefile.fpc U rtl/os2/sysutils.pp A rtl/sinclairql/system.pp A rtl/sinclairql/qdosfuncs.inc A rtl/sinclairql/buildrtl.pp A rtl/sinclairql/rtldefs.inc U rtl/solaris/Makefile U rtl/watcom/Makefile U rtl/wince/Makefile U rtl/Makefile U rtl/netware/systhrd.inc U rtl/netwlibc/Makefile.fpc U rtl/palmos/Makefile A rtl/sinclairql/sysfile.inc A rtl/sinclairql/Makefile.fpc A rtl/sinclairql/rtl.cfg A rtl/sinclairql/tthread.inc U rtl/watcom/sysutils.pp U rtl/win16/Makefile.fpc U rtl/zxspectrum/Makefile U rtl/netwlibc/systhrd.inc U rtl/os2/Makefile.fpc A rtl/sinclairql/qdos.inc A rtl/sinclairql/qdosh.inc A rtl/sinclairql/sysos.inc A rtl/sinclairql/sysosh.inc U rtl/symbian/Makefile U rtl/win16/Makefile U rtl/wince/Makefile.fpc U rtl/netwlibc/Makefile U rtl/os2/Makefile A rtl/sinclairql/si_prc.pp A rtl/sinclairql/Makefile A rtl/sinclairql/sysheap.inc A rtl/sinclairql/sysdir.inc U rtl/solaris/Makefile.fpc U rtl/wii/Makefile U rtl/wince/sysutils.pp U rtl/android/Makefile.fpc U rtl/android/unixandroid.inc U rtl/android/jvm/Makefile U rtl/android/Makefile U rtl/dragonfly/Makefile U rtl/freebsd/Makefile.fpc U rtl/java/jsystemh.inc U rtl/netbsd/Makefile.fpc U rtl/openbsd/x86_64/sighnd.inc U rtl/qnx/osposix.inc U rtl/qnx/signal.inc U rtl/win32/buildrtl.pp U rtl/win64/system.pp U packages/regexpr/Makefile U rtl/freebsd/Makefile U rtl/java/Makefile U rtl/netbsd/x86_64/sighnd.inc U rtl/openbsd/i386/sighnd.inc U rtl/qnx/errno.inc U rtl/qnx/qnx.inc U rtl/win32/Makefile.fpc U rtl/win64/buildrtl.pp U packages/regexpr/tests/testregexpr.pp U rtl/dragonfly/Makefile.fpc U rtl/freebsd/x86_64/sighnd.inc U rtl/netbsd/i386/sighnd.inc U rtl/openbsd/Makefile.fpc U rtl/qnx/dos.inc U rtl/qnx/posix.pp U rtl/win32/Makefile U rtl/win64/Makefile.fpc U packages/regexpr/tests/tcregexp.pp U rtl/freebsd/i386/sighnd.inc U rtl/netbsd/Makefile U rtl/openbsd/Makefile U rtl/qnx/Makefile U rtl/qnx/osposixh.inc U rtl/qnx/system.pp U rtl/win64/Makefile U rtl/Makefile.fpc U packages/cocoaint/Makefile U packages/fcl-passrc/src/pasresolver.pp U packages/cocoaint/src/foundation/NSProcessInfo.inc U packages/fcl-passrc/src/pasresolveeval.pas U packages/regexpr/fpmake.pp U packages/fcl-passrc/src/pparser.pp U packages/regexpr/examples/Makefile U packages/fcl-passrc/src/pastree.pp U packages/fcl-passrc/src/pscanner.pp U packages/fcl-passrc/src/passrcutil.pp U packages/fcl-passrc/tests/tcuseanalyzer.pas U packages/fcl-passrc/tests/tcgenerics.pp U packages/fcl-passrc/tests/tcbaseparser.pas U packages/rtl-objpas/src/inc/widestrutils.pp U packages/rtl-objpas/Makefile U packages/pastojs/src/pas2jscompiler.pp U packages/pastojs/tests/tcfiler.pas U packages/fcl-passrc/src/paswrite.pp U packages/fcl-passrc/tests/tcscanner.pas U packages/fcl-passrc/tests/tctypeparser.pas U packages/fcl-passrc/tests/tcclasstype.pas U packages/rtl-objpas/src/inc/nullable.pp U packages/rtl-objpas/src/inc/stdconvs.pp U packages/pastojs/src/pas2jsfilecache.pp U packages/pastojs/src/pas2jsfs.pp U packages/pastojs/tests/tcoptimizations.pas U packages/fcl-passrc/src/pasuseanalyzer.pas U packages/fcl-passrc/tests/tcprocfunc.pas A packages/fcl-passrc/tests/tcpaswritestatements.pas U packages/fcl-passrc/tests/tconstparser.pas U packages/fcl-passrc/fpmake.pp U packages/rtl-objpas/src/inc/dateutil.inc U packages/pastojs/src/fppas2js.pp U packages/pastojs/src/pas2jspcucompiler.pp U packages/pastojs/tests/tcmodules.pas U packages/fcl-passrc/tests/tcresolver.pas U packages/fcl-passrc/tests/tcresolvegenerics.pas U packages/fcl-passrc/tests/tcvarparser.pas U packages/fcl-passrc/Makefile U packages/rtl-objpas/src/inc/strutils.pp U packages/pastojs/src/pas2jsfiler.pp U packages/pastojs/src/pas2jslibcompiler.pp U packages/pastojs/tests/tcgenerics.pas U packages/pastojs/tests/tcprecompile.pas U packages/hash/src/sha1.pp U packages/chm/src/chmls.lpi U packages/hash/tests/tests.pp U packages/hash/fpmake.pp U packages/pastojs/Makefile U packages/hash/examples/Makefile U packages/pastojs/tests/tcunitsearch.pas U packages/hash/Makefile U packages/chm/Makefile U packages/winunits-base/Makefile U packages/fcl-js/fpmake.pp U packages/fcl-res/src/rcparser.y U packages/fcl-res/Makefile U packages/fcl-net/src/sslsockets.pp U packages/fcl-net/fpmake.pp U packages/fcl-db/src/sqldb/interbase/Makefile U packages/fcl-db/src/sqldb/sqldb.pp U packages/chm/src/chmreader.pas U packages/winunits-base/src/comobj.pp U packages/fcl-js/Makefile U packages/fcl-res/src/rcparser.pas U packages/fcl-res/src/coffwriter.pp U packages/fcl-net/src/sslbase.pp U packages/fcl-net/examples/Makefile U packages/fcl-db/src/sqldb/interbase/ibconnection.pp U packages/fcl-db/src/sqldb/postgres/Makefile U packages/chm/src/itsftransform.pas U packages/winunits-base/src/activex.pp U packages/fcl-js/src/jstree.pp U packages/fcl-res/src/rclex.l U packages/fcl-res/src/cofftypes.pp U packages/fcl-net/src/cnetdb.pp U packages/fcl-net/Makefile U packages/fcl-db/src/sqldb/sqlite/Makefile U packages/fcl-db/src/sqldb/postgres/pqconnection.pp U packages/chm/src/chmls.lpr U packages/chm/fpmake.pp U packages/fcl-js/src/jswriter.pp U packages/fcl-res/src/rclex.inc U packages/fcl-res/src/coffconsts.pp U packages/fcl-res/fpmake.pp U packages/fcl-net/src/ssockets.pp U packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp U packages/fcl-db/src/sqldb/interbase/fbadmin.pp U packages/fcl-db/src/sqldb/mysql/mysqlconn.inc U packages/fcl-db/src/sqldb/mysql/Makefile U packages/fcl-db/src/sqldb/mssql/Makefile U packages/fcl-db/src/sqldb/Makefile U packages/fcl-db/src/sqldb/odbc/Makefile U packages/fcl-db/src/base/dbconst.pas U packages/fcl-db/src/base/db.pas U packages/fcl-db/src/codegen/fpddcodegen.pp U packages/fcl-db/src/dbase/dbf_common.inc U packages/fcl-db/src/export/fprtfexport.pp U packages/fcl-db/src/paradox/Makefile U packages/fcl-db/Makefile U packages/fcl-db/tests/sqldbtoolsunit.pas U packages/fpmkunit/Makefile U packages/fcl-db/src/base/bufdataset.pas U packages/fcl-db/src/base/xmldatapacketreader.pp U packages/fcl-db/src/codegen/Makefile U packages/fcl-db/src/dbase/Makefile U packages/fcl-db/src/export/fpfixedexport.pp U packages/fcl-db/src/memds/Makefile U packages/fcl-db/src/sqlite/Makefile U packages/fcl-db/tests/bufdatasettoolsunit.pas U packages/fpmkunit/src/fpmkunit.pp U packages/fcl-db/src/sqldb/oracle/Makefile U packages/fcl-db/src/base/sqlscript.pp U packages/fcl-db/src/base/dsparams.inc U packages/fcl-db/src/base/Makefile U packages/fcl-db/src/base/fields.inc U packages/fcl-db/src/datadict/Makefile U packages/fcl-db/src/dbase/dbf_fields.pas U packages/fcl-db/src/export/fptexexport.pp U packages/fcl-db/src/sdf/Makefile U packages/fcl-db/tests/Makefile U packages/fcl-db/tests/testfieldtypes.pas A packages/qlunits A packages/qlunits/examples A packages/qlunits/src A packages/fcl-sound/tests A packages/fcl-sound/tests/data A packages/fcl-sound/tests/data/wav A packages/fcl-sound/tests/data/wav/reader A packages/fcl-sound/tests/data/wav/reader/valid U packages/paszlib/examples/Makefile U packages/paszlib/Makefile U packages/fpmkunit/fpmake.pp U packages/paszlib/fpmake.pp A packages/qlunits/src/qdos.pas U packages/fcl-sound/src/fpwavreader.pas A packages/fcl-sound/tests/data/wav/reader/valid/odd_fmt_size.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_16.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_64float.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32float.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_32float.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/euphoric_tape.wav.raw A packages/qlunits/fpmake.pp A packages/qlunits/README.txt A packages/fcl-sound/tests/data/wav/reader/valid/odd_fmt_size.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_24.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_8.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_32float.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32float.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_32float.wav A packages/fcl-sound/tests/data/wav/reader/valid/euphoric_tape.wav A packages/qlunits/Makefile A packages/qlunits/Makefile.fpc A packages/fcl-sound/tests/data/wav/reader/valid/odd_fmt_size.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16_tag.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_64float.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_32.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/euphoric_tape.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_64float.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_64float.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_24.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_16.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_32.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_24.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_8.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_24.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16_tag.wav A packages/fcl-sound/tests/tcwavreader.pas U packages/fcl-sound/fpmake.pp U packages/fcl-stl/src/gdeque.pp A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16_tag.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_8.wav U packages/fcl-sound/Makefile U packages/fcl-stl/src/gtree.pp U packages/fcl-db/src/datadict/fpdatadict.pp U packages/fcl-db/src/export/Makefile U packages/fcl-db/src/json/Makefile U packages/fcl-db/src/sql/Makefile U packages/fcl-db/tests/toolsunit.pas U packages/fcl-db/fpmake.pp U packages/paszlib/src/zipper.pp A packages/qlunits/examples/qlcube.pas A packages/qlunits/src/qlfloat.pas U packages/fcl-sound/src/fpwavformat.pas A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32float.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_24.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_8.wav.info.txt A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_64float.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_64float.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_16.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_32.wav A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_16.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_8.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32.wav A packages/fcl-sound/tests/testfclsound.lpr U packages/rtl-extra/Makefile A packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_8.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_32.wav.raw A packages/fcl-sound/tests/data/wav/reader/valid/44k_mono_24.wav A packages/fcl-sound/tests/testfclsound.lpi U packages/rtl-extra/src/win/serial.pp U packages/fcl-stl/Makefile U packages/a52/Makefile U packages/aspell/Makefile U packages/Makefile U packages/fcl-stl/fpmake.pp U packages/amunits/Makefile U packages/bzip2/Makefile U packages/ami-extra/Makefile U packages/bfd/Makefile U packages/cairo/Makefile U packages/dbus/Makefile U packages/fastcgi/Makefile U packages/cdrom/examples/Makefile U packages/dbus/src/dbuscomp.pp U packages/fcl-base/Makefile U packages/fcl-extra/examples/Makefile U packages/fcl-fpcunit/fpmake.pp U packages/fcl-json/Makefile U packages/fcl-json/src/fpjson.pp U packages/fcl-pdf/src/fppdf.pp U packages/cdrom/Makefile U packages/dbus/examples/Makefile U packages/fcl-async/Makefile U packages/fcl-registry/Makefile U packages/fcl-registry/fpmake.pp U packages/fcl-sdo/src/das/sdo_das_utils.pas U packages/fcl-web/src/base/fpjwt.pp U packages/fcl-web/src/webdata/Makefile U packages/fcl-xml/fpmake.pp U packages/arosunits/Makefile U packages/bzip2/fpmake.pp U packages/dblib/Makefile U packages/dts/Makefile U packages/fcl-base/examples/Makefile U packages/fcl-fpcunit/Makefile U packages/fcl-image/Makefile U packages/fcl-json/fpmake.pp U packages/fcl-json/tests/testjsonreader.pp U packages/fcl-pdf/fpmake.pp U packages/fcl-registry/tests/Makefile U packages/fcl-report/Makefile U packages/fcl-web/Makefile U packages/fcl-web/src/base/fphttpclient.pp U packages/fcl-web/src/restbridge/sqldbrestschema.pp U packages/fcl-xml/src/sax_xml.pp U packages/fpgtk/examples/Makefile U packages/fcl-base/fpmake.pp U packages/fcl-fpcunit/src/exampletests/Makefile U packages/fcl-image/examples/Makefile U packages/fcl-json/src/jsonscanner.pp U packages/fcl-json/tests/testjsondata.pp U packages/fcl-process/Makefile U packages/fcl-registry/src/xregreg.inc U packages/fcl-sdo/Makefile U packages/fcl-web/src/base/Makefile U packages/fcl-web/src/base/custmicrohttpapp.pp U packages/fcl-web/examples/httpclient/httpget.pas U packages/fftw/Makefile U packages/fppkg/Makefile U packages/fv/examples/Makefile U packages/ggi/Makefile U packages/gnome1/Makefile U packages/fpindexer/Makefile U packages/fv/Makefile U packages/gdbm/examples/Makefile U packages/gmp/examples/Makefile U packages/fuse/Makefile U packages/gdbm/Makefile U packages/gmp/Makefile U packages/gnutls/src/gnutlssockets.pp U packages/fcl-extra/Makefile U packages/fcl-fpcunit/src/tests/Makefile U packages/fcl-image/fpmake.pp U packages/fcl-json/src/jsonreader.pp U packages/fcl-pdf/Makefile U packages/fcl-process/fpmake.pp U packages/fcl-registry/src/regini.inc U packages/fcl-sdo/fpmake.pp U packages/fcl-web/src/base/fpwebfile.pp U packages/fcl-web/src/jsonrpc/Makefile U packages/fcl-xml/Makefile U packages/fpgtk/Makefile U packages/fppkg/fpmake.pp U packages/gdbint/Makefile U packages/ggi/examples/Makefile U packages/gnutls/Makefile U packages/graph/Makefile U packages/gtk1/examples/tutorial/Makefile U packages/gtk2/examples/filechooser/Makefile U packages/gtk2/examples/helloworld/Makefile U packages/hermes/Makefile U packages/googleapi/Makefile U packages/gtk1/examples/Makefile U packages/gtk2/examples/Makefile U packages/gtk2/examples/gtkglext/Makefile U packages/gtk2/examples/scribble_simple/Makefile U packages/gtk1/Makefile U packages/gtk2/Makefile U packages/gtk2/examples/gtk_demo/Makefile U packages/gtk2/examples/plugins/Makefile U packages/graph/src/ptcgraph/ptcgraph.pp U packages/gtk1/src/gtkgl/Makefile U packages/gtk2/examples/gettingstarted/Makefile U packages/gtk2/examples/helloworld2/Makefile U packages/httpd20/examples/Makefile U packages/httpd24/examples/Makefile U packages/iconvenc/examples/Makefile A packages/ide/fparm.lpi U packages/imlib/Makefile U packages/libc/Makefile U packages/httpd20/Makefile U packages/httpd24/Makefile U packages/iconvenc/Makefile U packages/ide/fakegdb/Makefile U packages/imagemagick/Makefile U packages/ldap/Makefile U packages/httpd13/Makefile U packages/httpd22/examples/Makefile U packages/ibase/examples/Makefile U packages/ide/compiler/Makefile U packages/ide/fpx64.lpi U packages/jni/Makefile U packages/hermes/fpmake.pp U packages/httpd22/Makefile U packages/ibase/Makefile U packages/ide/Makefile U packages/ide/fpmopts.inc U packages/iosxlocale/Makefile U packages/libcups/Makefile U packages/libenet/Makefile U packages/libgbafpc/examples/Makefile U packages/libgbafpc/examples/graphics/PCXView/Makefile U packages/libgc/Makefile U packages/libcurl/examples/Makefile U packages/libgbafpc/Makefile U packages/libgbafpc/examples/graphics/Makefile U packages/libgbafpc/examples/template/Makefile U packages/libcurl/Makefile U packages/libfontconfig/Makefile U packages/libgbafpc/examples/audio/PlayBoyScout/Makefile U packages/libgbafpc/examples/graphics/ansi_console/Makefile U packages/libffi/Makefile U packages/libgbafpc/examples/audio/Makefile U packages/libgbafpc/examples/graphics/SimpleBGScroll/Makefile U packages/libmagic/Makefile U packages/libndsfpc/examples/audio/Makefile U packages/libndsfpc/examples/audio/maxmod/reverb/Makefile U packages/libndsfpc/examples/audio/micrecord/Makefile U packages/libndsfpc/examples/debugging/exceptionTest/Makefile U packages/libndsfpc/examples/dswifi/autoconnect/Makefile U packages/libgd/fpmake.pp U packages/libndsfpc/examples/Makefile U packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile U packages/libndsfpc/examples/audio/maxmod/streaming/Makefile U packages/libndsfpc/examples/debugging/Makefile U packages/libndsfpc/examples/dswifi/ap_search/Makefile U packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile U packages/libgd/examples/Makefile U packages/libndsfpc/Makefile U packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile U packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile U packages/libndsfpc/examples/card/eeprom/Makefile U packages/libndsfpc/examples/dswifi/Makefile U packages/libndsfpc/examples/filesystem/Makefile U packages/libgd/Makefile U packages/libmicrohttpd/Makefile U packages/libndsfpc/examples/audio/maxmod/Makefile U packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile U packages/libndsfpc/examples/card/Makefile U packages/libndsfpc/examples/ds_motion/Makefile U packages/libndsfpc/examples/dswifi/httpget/Makefile U packages/libndsfpc/examples/filesystem/libfat/Makefile U packages/libndsfpc/examples/filesystem/nitrofs/Makefile U packages/libndsfpc/examples/gl2d/dual_screen/Makefile U packages/libndsfpc/examples/gl2d/sprites/Makefile U packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile U packages/libndsfpc/examples/gl2d/Makefile U packages/libndsfpc/examples/gl2d/scrolling/Makefile U packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile U packages/libndsfpc/examples/gl2d/2Dplus3D/Makefile U packages/libndsfpc/examples/gl2d/primitives/Makefile U packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile U packages/libndsfpc/examples/filesystem/nitrofs/nitrodir/Makefile U packages/libndsfpc/examples/gl2d/fonts/Makefile U packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile U packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile U packages/libndsfpc/examples/graphics/3D/Ortho/Makefile U packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile U packages/libndsfpc/examples/graphics/3D/Display_List/Makefile U packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile U packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile U packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile U packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile U packages/libndsfpc/examples/graphics/3D/Makefile U packages/libndsfpc/examples/graphics/3D/Picking/Makefile U packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile U packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile U packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile U packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile U packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile U packages/libndsfpc/examples/graphics/Backgrounds/Makefile U packages/libndsfpc/examples/graphics/Effects/windows/Makefile U packages/libndsfpc/examples/graphics/Printing/Makefile U packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile U packages/libndsfpc/examples/graphics/Effects/Makefile U packages/libndsfpc/examples/graphics/Makefile U packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile U packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile U packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/Makefile U packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile U packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile U packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile U packages/libndsfpc/examples/graphics/Ext_Palettes/Makefile U packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile U packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile U packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile U packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile U packages/libndsfpc/examples/hello_world/Makefile U packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile U packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile U packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile U packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile U packages/libndsfpc/examples/graphics/Sprites/simple/Makefile U packages/libndsfpc/examples/graphics/grit/Makefile U packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile U packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile U packages/libndsfpc/examples/time/stopwatch/Makefile U packages/libndsfpc/examples/graphics/Sprites/Makefile U packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile U packages/libndsfpc/examples/graphics/grit/256colorTilemap/Makefile U packages/libndsfpc/examples/input/Touch_Pad/Makefile U packages/libndsfpc/examples/input/keyboard/Makefile U packages/libndsfpc/examples/time/RealTimeClock/Makefile U packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile U packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile U packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile U packages/libndsfpc/examples/input/Makefile U packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile U packages/libndsfpc/examples/time/Makefile U packages/libndsfpc/examples/time/timercallback/Makefile U packages/libogcfpc/examples/audio/modplay/Makefile U packages/libogcfpc/examples/devices/network/sockettest/Makefile U packages/libogcfpc/examples/devices/usbkeyboard/basic_stdin/Makefile U packages/libogcfpc/examples/audio/Makefile U packages/libogcfpc/examples/devices/network/Makefile U packages/libogcfpc/examples/devices/usbkeyboard/Makefile U packages/libogcfpc/examples/Makefile U packages/libogcfpc/examples/devices/Makefile U packages/libogcfpc/examples/devices/usbgecko/gdbstub/Makefile U packages/libogcfpc/examples/filesystem/directory/Makefile U packages/libogcfpc/Makefile U packages/libogcfpc/examples/audio/mp3player/Makefile U packages/libogcfpc/examples/devices/usbgecko/Makefile U packages/libogcfpc/examples/filesystem/Makefile U packages/libogcfpc/examples/graphics/gx/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson2/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson6/Makefile U packages/libogcfpc/examples/graphics/gx/triangle/Makefile U packages/libsee/Makefile U packages/libusb/Makefile U packages/libxml/src/xmlxsdparser.pas U packages/libogcfpc/examples/graphics/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson1/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson5/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson9/Makefile U packages/librsvg/Makefile U packages/libtar/fpmake.pp U packages/libxml/examples/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson4/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson8/Makefile U packages/libpng/Makefile U packages/libtar/Makefile U packages/libxml/Makefile U packages/libogcfpc/examples/graphics/gx/gxSprites/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson3/Makefile U packages/libogcfpc/examples/graphics/gx/neheGX/lesson7/Makefile U packages/libogcfpc/examples/template/Makefile U packages/libsee/examples/Makefile U packages/libvlc/Makefile U packages/lua/Makefile U packages/modplug/Makefile U packages/ncurses/Makefile U packages/numlib/Makefile U packages/odata/Makefile U packages/matroska/Makefile U packages/mysql/examples/Makefile U packages/newt/examples/Makefile U packages/objcrtl/Makefile U packages/mad/Makefile U packages/mysql/Makefile U packages/newt/Makefile U packages/nvapi/Makefile U packages/morphunits/Makefile U packages/ncurses/examples/Makefile U packages/numlib/examples/Makefile U packages/oggvorbis/Makefile U packages/opengl/Makefile U packages/openssl/Makefile U packages/oracle/examples/Makefile U packages/palmunits/Makefile U packages/postgres/Makefile U packages/odbc/src/odbcsql.inc U packages/opencl/Makefile U packages/opengles/examples/Makefile U packages/oracle/Makefile U packages/os4units/Makefile U packages/pcap/Makefile U packages/odbc/examples/Makefile U packages/odbc/Makefile U packages/openal/Makefile U packages/opengl/examples/Makefile U packages/openssl/src/opensslsockets.pp U packages/os2units/Makefile U packages/pasjpeg/Makefile U packages/postgres/examples/Makefile U packages/ptc/examples/Makefile U packages/pxlib/examples/Makefile U packages/rtl-generics/Makefile U packages/rtl-unicode/Makefile U packages/ptc/Makefile U packages/pxlib/Makefile U packages/rtl-console/Makefile U packages/rtl-generics/src/inc/generics.dictionaries.inc U packages/ptc/src/ptcwrapper/ptcwrapper.pp U packages/rexx/Makefile U packages/rtl-generics/fpmake.pp U packages/sqlite/Makefile U packages/symbolic/examples/Makefile U packages/symbolic/src/teval.inc U packages/syslog/examples/Makefile U packages/tplylib/Makefile U packages/sndfile/Makefile U packages/symbolic/Makefile U packages/symbolic/src/symbexpr.inc U packages/syslog/Makefile U packages/tosunits/Makefile.fpc U packages/sdl/Makefile U packages/svgalib/Makefile U packages/symbolic/src/parsexpr.inc U packages/symbolic/src/exprstrs.inc U packages/tcl/Makefile U packages/univint/Makefile U packages/unzip/Makefile U packages/utmp/Makefile U packages/unixutil/Makefile U packages/users/examples/Makefile U packages/uuid/examples/Makefile U packages/unzip/fpmake.pp U packages/utmp/examples/Makefile U packages/vcl-compat/Makefile U packages/winunits-jedi/Makefile U packages/zlib/Makefile U tests/Makefile A tests/webtbs/tw38310b.pp A tests/webtbs/tw38267b.pp A tests/webtbs/tw38249.pp U packages/webidl/Makefile U packages/x11/Makefile U packages/zorba/Makefile U tests/Makefile.fpc A tests/webtbs/tw38310c.pp A tests/webtbs/tw38267a.pp A tests/webtbs/tw38201.pp U packages/winceunits/Makefile U packages/xforms/examples/Makefile U packages/fpmake_proc.inc A tests/webtbs/tw38310a.pp A tests/webtbs/tw38295.pp A tests/webtbs/tw28927.pp A tests/webtbs/tw38164.pp U packages/openal/examples/Makefile U packages/opengles/Makefile U packages/openssl/src/openssl.pas U packages/os2units/examples/Makefile U packages/pasjpeg/fpmake.pp U packages/proj4/Makefile U packages/pthreads/Makefile U packages/rexx/examples/Makefile U packages/rtl-generics/src/generics.collections.pas U packages/sdl/fpmake.pp U packages/svgalib/examples/Makefile U packages/symbolic/src/rearrang.inc U packages/symbolic/fpmake.pp U packages/tosunits/Makefile U packages/univint/examples/Makefile U packages/users/Makefile U packages/uuid/Makefile U packages/webidl/fpmake.pp U packages/xforms/Makefile U packages/fpmake_add.inc A tests/webtbs/tw38309.pp A tests/webtbs/tw38299.pp A tests/webtbs/tw38259.pp A tests/webtbs/tw38225.pp A tests/webtbs/tw38122b.pp A tests/webtbs/tw38238.pp A tests/webtbs/tw38202.pp A tests/test/units/unix U tests/webtbs/tw17236.pp A tests/webtbs/tw38145a.pp U tests/webtbs/tw17904.pp U tests/webtbs/tw29957.pp A tests/webtbs/tw38145b.pp A tests/webtbs/tw37621.pp A tests/webtbs/tw38074.pp A tests/webtbs/tw38083.pp A tests/webtbs/tw38051.pp A tests/webtbs/tw38122.pp A tests/webtbs/tw38069.pp A tests/webtbs/tw38054.pp A tests/webtbs/tw37969.pp A tests/webtbs/tw37926.pp U tests/test/units/linux/tstatx.pp A tests/test/tgenfunc24.pp U tests/test/cg/tm128.pp U tests/test/tcas128.pp A tests/test/tgenfunc23.pp A tests/test/toperator94.pp A tests/test/tfma1xtensa.pp A tests/webtbf/tw38289a.pp U tests/webtbf/tw12109a.pp U tests/tbs/tb0528.pp A tests/webtbs/tw38151.pp U tests/webtbs/tw5086.pp A tests/webtbs/tw38058.pp A tests/webtbs/uw38069.pp A tests/webtbs/tw36381.pp A tests/webtbs/tw37949.pp A tests/webtbs/tw38022.pp A tests/webtbs/tw37878.pp A tests/webtbs/tw35841.pp A tests/test/units/unix/tepoch1.pp A tests/test/tgenfunc26.pp U tests/test/tprec8.pp A tests/test/tgeneric106.pp A tests/test/toperator92.pp A tests/test/tthlp29.pp A tests/test/tnest5.pp U tests/webtbf/tw22665b.pp A tests/tbs/tb0682.pp A tests/webtbs/tw37844.pp A tests/test/units/unix/ttimezone1.pp A tests/test/tgenfunc25.pp A tests/test/cg/texit2.pp U tests/test/texception4.pp A tests/test/toperator91.pp A tests/test/toperator95.pp A tests/test/packages/win-base/tdispvar2.pp A tests/webtbf/tw38289b.pp A tests/tbs/tb0683.pp A tests/webtbs/tw38012.pp A tests/webtbs/tw37382.pp A tests/test/units/math/trndcurr.pp A tests/test/units/sysutils/testspo.pp D tests/test/units/unixutil A tests/test/tgenfunc27.pp A tests/test/tminmax.pp A tests/test/tgeneric107.pp A tests/test/toperator93.pp U tests/test/tfma1.inc A tests/test/traa641.pp U tests/webtbf/tw25862.pp A tests/tbs/tb0681.pp A tests/tbs/tb0679.pp A tests/tbf/tb0272.pp U tests/tbs/tb0596.pp A tests/tbf/tb0273.pp U tests/tbs/tb0678.pp A tests/tbs/tb0680.pp U tests/utils/testsuite/Makefile A utils/fpdoc/dw_chm.pp U utils/fpdoc/dwriter.pp U utils/fpdoc/fpdoc.lpi U utils/fpdoc/mkfpdoc.pp U utils/fpdoc/fpde/Makefile U utils/pas2js/Makefile U utils/debugsvr/Makefile U utils/fpcm/Makefile U tests/utils/Makefile U utils/fpdoc/dglobals.pp U utils/fpdoc/dw_xml.pp A utils/fpdoc/dw_basehtml.pp U utils/fpdoc/fpdocproj.pas U utils/fpdoc/Makefile U utils/pas2js/pas2js.pp U utils/Makefile U utils/dxegen/Makefile U tests/utils/dotest.pp U tests/tstunits/Makefile A utils/fpdoc/dw_markdown.pp A utils/fpdoc/dw_basemd.pp U utils/fpdoc/fpmake.pp U utils/fpdoc/fpclasschart.pp U utils/pas2js/webfilecache.pp U utils/pas2js/pas2jslib.pp U utils/debugsvr/gtk/Makefile U tests/readme.txt U tests/utils/avx/avxopcodes.pas U utils/fpdoc/dw_html.pp U utils/fpdoc/fpdocclasstree.pp U utils/fpdoc/fpdoc.pp U utils/fpdoc/dw_txt.pp D utils/fpdoc/dw_htmlchm.inc U utils/pas2js/docs/translation.html U utils/pas2js/dist/rtl.js U utils/debugsvr/console/Makefile U utils/fpcm/fpcmake.inc U utils/fpcm/fpcmmain.pp U utils/fpcm/fpcmake.ini U utils/fpcm/revision.inc U utils/fpcres/Makefile U utils/fpcmkcfg/Makefile U utils/fpcres/target.pas U utils/fppkg/lnet/lcommon.pp U utils/importtl/Makefile U utils/pas2fpm/Makefile U utils/tply/Makefile U compiler/llvm/agllvm.pas U compiler/llvm/llvmpara.pas U compiler/pdecsub.pas U compiler/utils/ppuutils/ppuout.pp U compiler/utils/Makefile.fpc U utils/fpcres/fpcres.pas U utils/fppkg/Makefile U utils/ihxutil/Makefile U utils/mksymbian/Makefile U utils/rmwait/Makefile U compiler/llvm/llvmdef.pas U compiler/llvm/aasmllvm.pas U compiler/llvm/nllvmtcon.pas U compiler/utils/ppuutils/ppudump.pp U compiler/utils/Makefile U utils/fpmc/Makefile U utils/h2pas/Makefile U utils/json2pas/Makefile U utils/pas2ut/Makefile U compiler/llvm/hlcgllvm.pas U compiler/llvm/llvminfo.pas U compiler/llvm/nllvmmem.pas U compiler/symsym.pas U compiler/utils/gppc386.pp U utils/fpcreslipo/Makefile U utils/fprcp/Makefile U utils/instantfpc/Makefile U utils/pas2jni/Makefile U utils/unicode/Makefile U compiler/llvm/llvmtype.pas U compiler/llvm/llvmpi.pas U compiler/ppu.pas U compiler/utils/samplecfg U compiler/utils/ppumove.pp U compiler/defcmp.pas U compiler/ncgcon.pas U compiler/i386/i386prop.inc U compiler/utils/gena64vfp.pp U compiler/i386/aoptcpu.pas U compiler/htypechk.pas U compiler/i386/i386atts.inc U compiler/i386/cpuelf.pas U compiler/i386/n386flw.pas U compiler/i386/cpuinfo.pas U compiler/i386/i386tab.inc U compiler/i386/hlcgcpu.pas U compiler/i386/i386int.inc U compiler/x86/nx86inl.pas U compiler/x86/nx86mat.pas U compiler/x86/agx86nsm.pas U compiler/x86/agx86int.pas U compiler/x86_64/aoptcpu.pas U compiler/x86_64/x8664att.inc C compiler/i386/i386nop.inc U compiler/i386/cpupara.pas U compiler/i386/n386mat.pas U compiler/x86/rgx86.pas U compiler/x86/cpubase.pas U compiler/x86/aasmcpu.pas U compiler/x86/nx86add.pas U compiler/x86/nx86con.pas U compiler/x86_64/x8664ats.inc U compiler/x86_64/cpuelf.pas U compiler/x86/aoptx86.pas U compiler/x86/x86ins.dat U compiler/x86/cgx86.pas U compiler/x86/rax86.pas U compiler/x86/symx86.pas U compiler/x86_64/cpuinfo.pas U compiler/x86_64/x8664tab.inc U compiler/i386/i386att.inc U compiler/i386/cgcpu.pas U compiler/i386/n386add.pas U compiler/i386/i386op.inc U compiler/x86/rax86att.pas U compiler/x86/rax86int.pas U compiler/x86/agx86att.pas U compiler/x86/nx86cnv.pas U compiler/x86_64/x8664pro.inc C compiler/x86_64/x8664nop.inc U compiler/x86_64/hlcgcpu.pas U compiler/x86_64/cpupara.pas U compiler/x86_64/nx64cnv.pas U compiler/x86_64/win64unw.pas U compiler/x86_64/rax64int.pas U compiler/x86_64/nx64flw.pas U compiler/nadd.pas U compiler/pgenutil.pas U compiler/avr/cgcpu.pas U compiler/avr/navrmat.pas U compiler/dirparse.pas U compiler/symbase.pas U compiler/m68k/cpuinfo.pas U compiler/m68k/ra68kmot.pas U compiler/m68k/aasmcpu.pas U compiler/m68k/n68kmem.pas U compiler/x86_64/x8664op.inc U compiler/symtable.pas U compiler/avr/aoptcpu.pas U compiler/avr/cpupara.pas U compiler/ptype.pas U compiler/nutils.pas U compiler/ninl.pas U compiler/m68k/cgcpu.pas U compiler/m68k/cpupara.pas U compiler/m68k/n68kmat.pas U compiler/x86_64/x8664int.inc U compiler/pexpr.pas U compiler/optdfa.pas U compiler/avr/agavrgas.pas U compiler/optutils.pas U compiler/nld.pas U compiler/defutil.pas U compiler/m68k/cpubase.pas U compiler/m68k/cputarg.pas U compiler/m68k/n68kcal.pas U compiler/dbgstabs.pas U compiler/pexports.pas U compiler/avr/aasmcpu.pas U compiler/avr/raavrgas.pas U compiler/psub.pas U compiler/symcreat.pas U compiler/m68k/aoptcpu.pas U compiler/m68k/ag68kvasm.pas U compiler/m68k/n68kadd.pas U compiler/xtensa/agcpugas.pas U compiler/xtensa/ncpuinl.pas U compiler/xtensa/cpupara.pas U compiler/xtensa/cpuinfo.pas U compiler/xtensa/aasmcpu.pas U compiler/xtensa/cgcpu.pas U compiler/xtensa/ncpuadd.pas U compiler/xtensa/ncpumat.pas U compiler/i8086/i8086prop.inc C compiler/i8086/i8086nop.inc U compiler/i8086/hlcgcpu.pas U compiler/i8086/n8086mat.pas U compiler/i8086/i8086op.inc U compiler/aarch64/cpupara.pas U compiler/aarch64/cpubase.pas U compiler/aarch64/a64op.inc U compiler/aarch64/ra64dwa.inc U compiler/nflw.pas U compiler/i8086/i8086atts.inc U compiler/i8086/cpupara.pas U compiler/i8086/n8086ld.pas U compiler/i8086/i8086int.inc U compiler/aarch64/agcpugas.pas U compiler/aarch64/ncpuinl.pas U compiler/aarch64/a64ins.dat U compiler/aarch64/ra64con.inc U compiler/xtensa/racpugas.pas U compiler/i8086/i8086att.inc U compiler/i8086/cgcpu.pas U compiler/i8086/n8086inl.pas U compiler/i8086/symcpu.pas U compiler/aarch64/ncpumat.pas U compiler/aarch64/aasmcpu.pas U compiler/aarch64/a64atts.inc U compiler/aarch64/cgcpu.pas U compiler/aarch64/ra64num.inc U compiler/xtensa/ncpumem.pas U compiler/i8086/n8086con.pas U compiler/i8086/i8086tab.inc U compiler/i8086/n8086add.pas U compiler/i8086/n8086mem.pas U compiler/symdef.pas U compiler/aarch64/aoptcpu.pas U compiler/aarch64/a64att.inc U compiler/aarch64/a64reg.dat U compiler/aarch64/ra64nor.inc U compiler/aarch64/ra64sri.inc U compiler/aarch64/racpu.pas U compiler/aarch64/ra64rni.inc U compiler/aarch64/ra64sup.inc U compiler/aarch64/ra64std.inc U compiler/aarch64/ra64sta.inc U compiler/aarch64/racpugas.pas U compiler/sparcgen/cgsparc.pas U compiler/sparcgen/racpugas.pas U compiler/verbose.pas U compiler/pass_2.pas U compiler/systems/i_linux.pas A compiler/systems/i_sinclairql.pas U compiler/systems/t_win16.pas U compiler/link.pas U compiler/arm/aoptcpu.pas U compiler/aarch64/ncpuflw.pas U compiler/sparcgen/ncpucnv.pas U compiler/ncnv.pas U compiler/ncgflw.pas U compiler/systems/t_embed.pas U compiler/systems/t_zxspectrum.pas U compiler/systems/i_win.pas U compiler/cgobj.pas U compiler/optcse.pas U compiler/arm/cpubase.pas U compiler/aarch64/hlcgcpu.pas U compiler/sparcgen/cpugas.pas U compiler/nmat.pas U compiler/sparcgen/aasmcpu.pas U compiler/sparcgen/rgcpu.pas U compiler/ncal.pas U compiler/systems/t_amiga.pas A compiler/systems/t_sinclairql.pas U compiler/systems/t_msdos.pas U compiler/node.pas A compiler/ppcppc64le.lpi U compiler/arm/armins.dat U compiler/arm/aasmcpu.pas U compiler/arm/cpupara.pas U compiler/arm/cpuelf.pas U compiler/arm/agarmgas.pas U compiler/arm/hlcgcpu.pas U compiler/arm/narminl.pas U compiler/arm/rgcpu.pas U compiler/z80/aasmcpu.pas U compiler/z80/aoptcpub.pas U compiler/z80/nz80add.pas U compiler/rautils.pas U compiler/nmem.pas U compiler/arm/narmcnv.pas U compiler/arm/raarmgas.pas U compiler/z80/cpuinfo.pas U compiler/z80/aoptcpu.pas U compiler/z80/cpupara.pas U compiler/raatt.pas U compiler/scandir.pas U compiler/arm/narmld.pas U compiler/aoptobj.pas U compiler/z80/agsdasz80.pas U compiler/z80/cgcpu.pas U compiler/z80/tgcpu.pas U compiler/pdecl.pas U compiler/globtype.pas C compiler/msgtxt.inc C compiler/msgidx.inc U compiler/fppu.pas U compiler/options.pas U compiler/ncgbas.pas U compiler/systems/t_linux.pas U compiler/systems/t_atari.pas U compiler/systems/i_macos.pas U compiler/compinnr.pas U compiler/ncginl.pas U compiler/arm/armtab.inc U compiler/arm/cgcpu.pas U compiler/arm/narmadd.pas U compiler/arm/narmmat.pas U compiler/z80/raz80asm.pas U compiler/z80/agz80vasm.pas U compiler/z80/cpubase.pas U compiler/aasmtai.pas U compiler/symtype.pas C compiler/msg/errore.msg U compiler/ppc68k.lpi U compiler/entfile.pas U compiler/riscv/hlcgrv.pas U compiler/armgen/aoptarm.pas U compiler/ncon.pas U compiler/pinline.pas U compiler/cstreams.pas U compiler/ncgutil.pas U compiler/fpcdefs.inc U compiler/comphook.pas U compiler/Makefile U compiler/nbas.pas U compiler/systems.inc U compiler/aggas.pas U compiler/scanner.pas U compiler/globals.pas U compiler/assemble.pas U compiler/systems.pas U compiler/psystem.pas U compiler/cutils.pas U compiler/cepiktimer.pas U compiler/riscv/agrvgas.pas A compiler/comptty.pas U compiler/generic/cpuinfo.pas U compiler/pmodules.pas U compiler/aasmcnst.pas U compiler/cgbase.pas U compiler/powerpc/cgcpu.pas U compiler/powerpc/rappcgas.pas U compiler/fpcp.pas U compiler/jvm/hlcgcpu.pas U compiler/Makefile.fpc U compiler/aopt.pas U compiler/powerpc/cpupara.pas U compiler/powerpc/nppcadd.pas U compiler/cg64f32.pas U compiler/hlcgobj.pas U compiler/jvm/njvmcnv.pas U compiler/ncgmat.pas U compiler/ngenutil.pas U compiler/powerpc/cpupi.pas U compiler/aasmbase.pas U compiler/hlcg2ll.pas U compiler/jvm/jvmdef.pas U compiler/mips/aasmcpu.pas U compiler/mips/hlcgcpu.pas U compiler/ncgadd.pas U compiler/ogcoff.pas U compiler/optloadmodifystore.pas U compiler/pkgutil.pas U compiler/powerpc64/rappcgas.pas U compiler/ppcgen/ngppcadd.pas U compiler/riscv32/rarv32gas.pas U Makefile U compiler/jvm/njvmtcon.pas U compiler/mips/cpuelf.pas U compiler/mips/ncpuinln.pas U compiler/ngtcon.pas U compiler/ogrel.pas U compiler/pbase.pas U compiler/powerpc64/nppcadd.pas U compiler/ppcgen/cgppc.pas U compiler/ppcgen/rgcpu.pas U compiler/sparc/cgcpu.pas U compiler/powerpc/agppcmpw.pas U compiler/powerpc/nppcmat.pas U compiler/dbgdwarf.pas U compiler/jvm/agjasmin.pas U compiler/jvm/njvmmem.pas U compiler/mips/cgcpu.pas U compiler/mips/ncpucnv.pas U compiler/ncgcal.pas U compiler/ogomf.pas U compiler/optvirt.pas U compiler/powerpc64/cgcpu.pas U compiler/ppcgen/agppcgas.pas U compiler/ppcgen/ngppcinl.pas U compiler/riscv64/rarv64gas.pas U installer/Makefile U compiler/jvm/pjvm.pas U compiler/mips/cpugas.pas U compiler/mips/racpugas.pas U compiler/ogbase.pas U compiler/omfbase.pas U compiler/pdecobj.pas U compiler/powerpc64/nppcmat.pas U compiler/ppcgen/hlcgppc.pas U compiler/rgobj.pas U compiler/sparc64/cpugas.pas U . -- Aufzeichnung der Informationen für Zusammenführung zwischen Projektarchiv-URLs in ».«: U . U rtl Konfliktübersicht: Textkonflikte: 6 Konfliktübersicht: Textkonflikte: 6 git-svn-id: branches/tg74/avx512-0037785@48108 -
1111 lines
39 KiB
ObjectPascal
1111 lines
39 KiB
ObjectPascal
{
|
|
Copyright (c) 1998-2002 by Carl Eric Codere and Peter Vreman
|
|
|
|
Does the parsing for the x86 GNU AS styled inline assembler.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
****************************************************************************
|
|
}
|
|
Unit rax86att;
|
|
|
|
{$i fpcdefs.inc}
|
|
|
|
Interface
|
|
|
|
uses
|
|
cpubase,
|
|
raatt,rax86, rautils;
|
|
|
|
type
|
|
|
|
{ tx86attreader }
|
|
|
|
tx86attreader = class(tattreader)
|
|
ActOpsize : topsize;
|
|
function is_asmopcode(const s: string):boolean;override;
|
|
procedure handleopcode;override;
|
|
procedure BuildReference(oper : tx86operand);
|
|
procedure BuildOperand(oper : tx86operand);
|
|
procedure BuildOpCode(instr : tx86instruction);
|
|
procedure handlepercent;override;
|
|
protected
|
|
procedure MaybeGetPICModifier(var oper: tx86operand);
|
|
end;
|
|
|
|
{ Tx86attInstruction }
|
|
|
|
Tx86attInstruction = class(Tx86Instruction)
|
|
procedure AddReferenceSizes; override;
|
|
procedure FixupOpcode;override;
|
|
end;
|
|
|
|
Implementation
|
|
|
|
uses
|
|
{ helpers }
|
|
cutils,
|
|
{ global }
|
|
globtype,verbose,
|
|
systems,
|
|
{ aasm }
|
|
aasmbase,aasmdata,aasmcpu,
|
|
{ symtable }
|
|
symconst,symsym,symdef,
|
|
{ parser }
|
|
scanner,
|
|
procinfo,
|
|
itcpugas,
|
|
paramgr,
|
|
cgbase
|
|
;
|
|
|
|
{ Tx86attInstruction }
|
|
|
|
|
|
procedure Tx86attInstruction.AddReferenceSizes;
|
|
var
|
|
i: integer;
|
|
begin
|
|
if (Opsize <> S_NO) and
|
|
(MemRefInfo(opcode).ExistsSSEAVX) and
|
|
(MemRefInfo(opcode).MemRefSize in MemRefMultiples) then
|
|
begin
|
|
for i := 1 to ops do
|
|
begin
|
|
if operands[i].Opr.Typ in [OPR_REFERENCE, OPR_LOCAL] then
|
|
begin
|
|
if (tx86operand(operands[i]).opsize = S_NO) then
|
|
tx86operand(operands[i]).opsize := Opsize;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
inherited AddReferenceSizes;
|
|
end;
|
|
|
|
procedure Tx86attInstruction.FixupOpcode;
|
|
begin
|
|
case opcode of
|
|
A_MOVQ:
|
|
begin
|
|
{ May be either real 'movq' or a generic 'mov' with 'q' suffix. Convert to mov
|
|
if source is a constant, or if neither operand is an mmx/xmm register }
|
|
{$ifdef x86_64}
|
|
if (ops=2) and
|
|
(
|
|
(operands[1].opr.typ=OPR_CONSTANT) or not
|
|
(
|
|
((operands[1].opr.typ=OPR_REGISTER) and
|
|
(getregtype(operands[1].opr.reg) in [R_MMXREGISTER,R_MMREGISTER])) or
|
|
((operands[2].opr.typ=OPR_REGISTER) and
|
|
(getregtype(operands[2].opr.reg) in [R_MMXREGISTER,R_MMREGISTER]))
|
|
)
|
|
) then
|
|
opcode:=A_MOV;
|
|
{$endif x86_64}
|
|
end;
|
|
else
|
|
;
|
|
end;
|
|
end;
|
|
|
|
{ Tx86attReader }
|
|
|
|
procedure tx86attreader.handlepercent;
|
|
var
|
|
len : longint;
|
|
begin
|
|
len:=1;
|
|
actasmpattern[len]:='%';
|
|
c:=current_scanner.asmgetchar;
|
|
{ to be a register there must be a letter and not a number }
|
|
if c in ['0'..'9'] then
|
|
begin
|
|
actasmtoken:=AS_MOD;
|
|
end
|
|
else
|
|
begin
|
|
while c in ['a'..'z','A'..'Z','0'..'9'] do
|
|
Begin
|
|
inc(len);
|
|
actasmpattern[len]:=c;
|
|
c:=current_scanner.asmgetchar;
|
|
end;
|
|
actasmpattern[0]:=chr(len);
|
|
uppervar(actasmpattern);
|
|
if (actasmpattern = '%ST') and (c='(') then
|
|
Begin
|
|
actasmpattern:=actasmpattern+c;
|
|
c:=current_scanner.asmgetchar;
|
|
if c in ['0'..'9'] then
|
|
actasmpattern:=actasmpattern + c
|
|
else
|
|
Message(asmr_e_invalid_fpu_register);
|
|
c:=current_scanner.asmgetchar;
|
|
if c <> ')' then
|
|
Message(asmr_e_invalid_fpu_register)
|
|
else
|
|
Begin
|
|
actasmpattern:=actasmpattern + c;
|
|
c:=current_scanner.asmgetchar; { let us point to next character. }
|
|
end;
|
|
end;
|
|
if is_register(actasmpattern) then
|
|
exit;
|
|
Message(asmr_e_invalid_register);
|
|
actasmtoken:=raatt.AS_NONE;
|
|
end;
|
|
end;
|
|
|
|
|
|
Procedure tx86attreader.BuildReference(oper : tx86operand);
|
|
|
|
procedure Consume_RParen;
|
|
begin
|
|
if actasmtoken <> AS_RPAREN then
|
|
Begin
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
RecoverConsume(true);
|
|
end
|
|
else
|
|
begin
|
|
Consume(AS_RPAREN);
|
|
if not (actasmtoken in [AS_COMMA,AS_SEPARATOR,AS_END]) then
|
|
Begin
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
RecoverConsume(true);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure Consume_Scale;
|
|
var
|
|
l : aint;
|
|
begin
|
|
{ we have to process the scaling }
|
|
l:=BuildConstExpression(false,true);
|
|
if ((l = 2) or (l = 4) or (l = 8) or (l = 1)) then
|
|
oper.opr.ref.scalefactor:=l
|
|
else
|
|
Begin
|
|
Message(asmr_e_wrong_scale_factor);
|
|
oper.opr.ref.scalefactor:=0;
|
|
end;
|
|
end;
|
|
|
|
|
|
begin
|
|
oper.InitRef;
|
|
Consume(AS_LPAREN);
|
|
Case actasmtoken of
|
|
AS_INTNUM,
|
|
AS_MINUS,
|
|
AS_PLUS: { absolute offset, such as fs:(0x046c) }
|
|
Begin
|
|
{ offset(offset) is invalid }
|
|
If oper.opr.Ref.Offset <> 0 Then
|
|
Begin
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
RecoverConsume(true);
|
|
End
|
|
Else
|
|
Begin
|
|
oper.opr.Ref.Offset:=BuildConstExpression(false,true);
|
|
Consume_RParen;
|
|
end;
|
|
exit;
|
|
End;
|
|
AS_REGISTER: { (reg ... }
|
|
Begin
|
|
{ Check if there is already a base (mostly ebp,esp) than this is
|
|
not allowed, because it will give crashing code }
|
|
if ((oper.opr.typ=OPR_REFERENCE) and (oper.opr.ref.base<>NR_NO)) or
|
|
((oper.opr.typ=OPR_LOCAL) and (oper.opr.localsym.localloc.loc<>LOC_REGISTER)) then
|
|
message(asmr_e_cannot_index_relative_var);
|
|
oper.opr.ref.base:=actasmregister;
|
|
{$ifdef x86_64}
|
|
{ non-GOT based RIP-relative accesses are also position-independent }
|
|
if (oper.opr.ref.base=NR_RIP) and
|
|
(oper.opr.ref.refaddr<>addr_pic) then
|
|
oper.opr.ref.refaddr:=addr_pic_no_got;
|
|
{$endif x86_64}
|
|
Consume(AS_REGISTER);
|
|
{ can either be a register or a right parenthesis }
|
|
{ (reg) }
|
|
if actasmtoken=AS_RPAREN then
|
|
Begin
|
|
Consume_RParen;
|
|
exit;
|
|
end;
|
|
{ (reg,reg .. }
|
|
Consume(AS_COMMA);
|
|
if actasmtoken=AS_REGISTER then
|
|
Begin
|
|
oper.opr.ref.index:=actasmregister;
|
|
Consume(AS_REGISTER);
|
|
{ check for scaling ... }
|
|
case actasmtoken of
|
|
AS_RPAREN:
|
|
Begin
|
|
Consume_RParen;
|
|
exit;
|
|
end;
|
|
AS_COMMA:
|
|
Begin
|
|
Consume(AS_COMMA);
|
|
Consume_Scale;
|
|
Consume_RParen;
|
|
end;
|
|
else
|
|
Begin
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
RecoverConsume(false);
|
|
end;
|
|
end; { end case }
|
|
end
|
|
else
|
|
Begin
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
RecoverConsume(false);
|
|
end;
|
|
end; {end case }
|
|
AS_COMMA: { (, ... can either be scaling, or index }
|
|
Begin
|
|
Consume(AS_COMMA);
|
|
{ Index }
|
|
if (actasmtoken=AS_REGISTER) then
|
|
Begin
|
|
oper.opr.ref.index:=actasmregister;
|
|
Consume(AS_REGISTER);
|
|
{ check for scaling ... }
|
|
case actasmtoken of
|
|
AS_RPAREN:
|
|
Begin
|
|
Consume_RParen;
|
|
exit;
|
|
end;
|
|
AS_COMMA:
|
|
Begin
|
|
Consume(AS_COMMA);
|
|
Consume_Scale;
|
|
Consume_RParen;
|
|
end;
|
|
else
|
|
Begin
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
RecoverConsume(false);
|
|
end;
|
|
end; {end case }
|
|
end
|
|
{ Scaling }
|
|
else
|
|
Begin
|
|
Consume_Scale;
|
|
Consume_RParen;
|
|
exit;
|
|
end;
|
|
end;
|
|
else
|
|
Begin
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
RecoverConsume(false);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
Procedure tx86attreader.MaybeGetPICModifier(var oper: tx86operand);
|
|
var
|
|
relsym: string;
|
|
asmsymtyp: tasmsymtype;
|
|
l: tcgint;
|
|
sym: tasmsymbol;
|
|
begin
|
|
case actasmtoken of
|
|
AS_AT:
|
|
begin
|
|
{ darwin/i386 needs a relsym instead, and we can't }
|
|
{ generate this automatically }
|
|
if (target_info.system in [system_i386_darwin,system_i386_iphonesim]) then
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
consume(AS_AT);
|
|
if actasmtoken=AS_ID then
|
|
begin
|
|
{$ifdef x86_64}
|
|
if (actasmpattern='GOTPCREL') or
|
|
(actasmpattern='PLT') then
|
|
{$endif x86_64}
|
|
{$ifdef i386}
|
|
if actasmpattern='GOT' then
|
|
{$endif i386}
|
|
{$ifdef i8086}
|
|
if actasmpattern='GOT' then
|
|
{$endif i8086}
|
|
begin
|
|
case oper.opr.typ of
|
|
OPR_SYMBOL:
|
|
begin
|
|
sym:=oper.opr.symbol;
|
|
if oper.opr.symofs<>0 then
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
oper.opr.typ:=OPR_REFERENCE;
|
|
fillchar(oper.opr.ref,sizeof(oper.opr.ref),0);
|
|
oper.opr.ref.symbol:=sym;
|
|
end;
|
|
OPR_REFERENCE:
|
|
begin
|
|
{ ok }
|
|
end;
|
|
else
|
|
Message(asmr_e_invalid_reference_syntax)
|
|
end;
|
|
oper.opr.ref.refaddr:=addr_pic;
|
|
consume(AS_ID);
|
|
end
|
|
else
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
end
|
|
else
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
end;
|
|
AS_MINUS:
|
|
begin
|
|
{ relsym? }
|
|
Consume(AS_MINUS);
|
|
BuildConstSymbolExpression(true,true,false,l,relsym,asmsymtyp);
|
|
if (relsym<>'') then
|
|
if not assigned(oper.opr.ref.relsymbol) then
|
|
oper.opr.ref.relsymbol:=current_asmdata.RefAsmSymbol(relsym,asmsymtyp)
|
|
else
|
|
Message(asmr_e_invalid_reference_syntax)
|
|
else
|
|
dec(oper.opr.ref.offset,l);
|
|
end;
|
|
else
|
|
;
|
|
end;
|
|
end;
|
|
|
|
|
|
Procedure tx86attreader.BuildOperand(oper : tx86operand);
|
|
var
|
|
tempstr,
|
|
expr : string;
|
|
typesize,l,k : tcgint;
|
|
|
|
|
|
procedure AddLabelOperand(hl:tasmlabel);
|
|
begin
|
|
if not(actasmtoken in [AS_PLUS,AS_MINUS,AS_LPAREN]) and
|
|
is_calljmp(actopcode) then
|
|
begin
|
|
oper.opr.typ:=OPR_SYMBOL;
|
|
oper.opr.symbol:=hl;
|
|
end
|
|
else
|
|
begin
|
|
oper.InitRef;
|
|
oper.opr.ref.symbol:=hl;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure MaybeRecordOffset;
|
|
var
|
|
mangledname: string;
|
|
hasdot : boolean;
|
|
l,
|
|
toffset,
|
|
tsize : tcgint;
|
|
begin
|
|
if not(actasmtoken in [AS_DOT,AS_PLUS,AS_MINUS]) then
|
|
exit;
|
|
l:=0;
|
|
mangledname:='';
|
|
hasdot:=(actasmtoken=AS_DOT);
|
|
if hasdot then
|
|
begin
|
|
if expr<>'' then
|
|
begin
|
|
BuildRecordOffsetSize(expr,toffset,tsize,mangledname,false);
|
|
if (oper.opr.typ<>OPR_CONSTANT) and
|
|
(mangledname<>'') then
|
|
Message(asmr_e_wrong_sym_type);
|
|
inc(l,toffset);
|
|
oper.SetSize(tsize,true);
|
|
|
|
case oper.opr.typ of
|
|
OPR_REFERENCE: oper.opr.varsize := tsize;
|
|
OPR_LOCAL: oper.opr.localvarsize := tsize;
|
|
else
|
|
;
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
if actasmtoken in [AS_PLUS,AS_MINUS] then
|
|
inc(l,BuildConstExpression(true,false));
|
|
case oper.opr.typ of
|
|
OPR_LOCAL :
|
|
begin
|
|
{ don't allow direct access to fields of parameters, because that
|
|
will generate buggy code. Allow it only for explicit typecasting }
|
|
if hasdot and
|
|
(not oper.hastype) then
|
|
checklocalsubscript(oper.opr.localsym);
|
|
inc(oper.opr.localsymofs,l);
|
|
inc(oper.opr.localconstoffset,l);
|
|
end;
|
|
OPR_CONSTANT :
|
|
if (mangledname<>'') then
|
|
begin
|
|
if (oper.opr.val<>0) then
|
|
Message(asmr_e_wrong_sym_type);
|
|
oper.opr.typ:=OPR_SYMBOL;
|
|
oper.opr.symbol:=current_asmdata.RefAsmSymbol(mangledname,AT_FUNCTION);
|
|
end
|
|
else
|
|
inc(oper.opr.val,l);
|
|
OPR_REFERENCE :
|
|
begin
|
|
inc(oper.opr.ref.offset,l);
|
|
inc(oper.opr.constoffset,l);
|
|
end;
|
|
OPR_SYMBOL:
|
|
Message(asmr_e_invalid_symbol_ref);
|
|
else
|
|
internalerror(200309221);
|
|
end;
|
|
end;
|
|
|
|
|
|
function MaybeBuildReference:boolean;
|
|
{ Try to create a reference, if not a reference is found then false
|
|
is returned }
|
|
var
|
|
mangledname: string;
|
|
begin
|
|
MaybeBuildReference:=true;
|
|
case actasmtoken of
|
|
AS_INTNUM:
|
|
Begin
|
|
{ allow %segmentregister:number }
|
|
if oper.opr.ref.segment<>NR_NO then
|
|
begin
|
|
// already done before calling oper.InitRef;
|
|
if oper.opr.Ref.Offset <> 0 Then
|
|
Message(asmr_e_invalid_reference_syntax)
|
|
else
|
|
begin
|
|
oper.opr.Ref.Offset:=BuildConstExpression(true,false);
|
|
if actasmtoken=AS_LPAREN then
|
|
BuildReference(oper)
|
|
else if (oper.opr.ref.segment <> NR_FS) and
|
|
(oper.opr.ref.segment <> NR_GS) then
|
|
Message(asmr_w_general_segment_with_constant);
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
oper.opr.ref.offset:=BuildConstExpression(True,False);
|
|
BuildReference(oper);
|
|
end;
|
|
end;
|
|
AS_MINUS,
|
|
AS_PLUS:
|
|
Begin
|
|
oper.opr.ref.offset:=BuildConstExpression(True,False);
|
|
if actasmtoken<>AS_LPAREN then
|
|
Message(asmr_e_invalid_reference_syntax)
|
|
else
|
|
BuildReference(oper);
|
|
end;
|
|
AS_LPAREN:
|
|
BuildReference(oper);
|
|
AS_ID: { only a variable is allowed ... }
|
|
Begin
|
|
tempstr:=actasmpattern;
|
|
Consume(AS_ID);
|
|
{ typecasting? }
|
|
if (actasmtoken=AS_LPAREN) and
|
|
SearchType(tempstr,typesize) then
|
|
begin
|
|
oper.hastype:=true;
|
|
Consume(AS_LPAREN);
|
|
BuildOperand(oper);
|
|
Consume(AS_RPAREN);
|
|
if oper.opr.typ in [OPR_REFERENCE,OPR_LOCAL] then
|
|
oper.SetSize(typesize,true);
|
|
end
|
|
else
|
|
if not oper.SetupVar(tempstr,false) then
|
|
Message1(sym_e_unknown_id,tempstr);
|
|
{ record.field ? }
|
|
if actasmtoken=AS_DOT then
|
|
begin
|
|
BuildRecordOffsetSize(tempstr,l,k,mangledname,false);
|
|
if (mangledname<>'') then
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
inc(oper.opr.ref.offset,l);
|
|
|
|
case oper.opr.typ of
|
|
OPR_REFERENCE: oper.opr.varsize := k;
|
|
OPR_LOCAL: oper.opr.localvarsize := k;
|
|
else
|
|
;
|
|
end;
|
|
end;
|
|
MaybeGetPICModifier(oper);
|
|
case actasmtoken of
|
|
AS_END,
|
|
AS_SEPARATOR,
|
|
AS_COMMA: ;
|
|
AS_LPAREN:
|
|
BuildReference(oper);
|
|
else
|
|
Begin
|
|
Message(asmr_e_invalid_reference_syntax);
|
|
Consume(actasmtoken);
|
|
end;
|
|
end; {end case }
|
|
end;
|
|
else
|
|
MaybeBuildReference:=false;
|
|
end; { end case }
|
|
end;
|
|
|
|
var
|
|
tempreg : tregister;
|
|
hl : tasmlabel;
|
|
Begin
|
|
expr:='';
|
|
case actasmtoken of
|
|
AS_LPAREN: { Memory reference or constant expression }
|
|
Begin
|
|
oper.InitRef;
|
|
BuildReference(oper);
|
|
end;
|
|
|
|
AS_DOLLAR: { Constant expression }
|
|
Begin
|
|
Consume(AS_DOLLAR);
|
|
BuildConstantOperand(oper);
|
|
end;
|
|
|
|
AS_INTNUM,
|
|
AS_MINUS,
|
|
AS_PLUS:
|
|
Begin
|
|
{ Constant memory offset }
|
|
{ This must absolutely be followed by ( }
|
|
oper.InitRef;
|
|
oper.opr.ref.offset:=asizeint(BuildConstExpression(True,False));
|
|
if actasmtoken<>AS_LPAREN then
|
|
Message(asmr_e_invalid_reference_syntax)
|
|
else
|
|
BuildReference(oper);
|
|
end;
|
|
|
|
AS_STAR: { Call from memory address }
|
|
Begin
|
|
Consume(AS_STAR);
|
|
if actasmtoken=AS_REGISTER then
|
|
begin
|
|
oper.opr.typ:=OPR_REGISTER;
|
|
oper.opr.reg:=actasmregister;
|
|
oper.SetSize(tcgsize2size[reg_cgsize(actasmregister)],true);
|
|
Consume(AS_REGISTER);
|
|
end
|
|
else
|
|
begin
|
|
oper.InitRef;
|
|
if not MaybeBuildReference then
|
|
Message(asmr_e_syn_operand);
|
|
end;
|
|
{ this is only allowed for call's and jmp's }
|
|
if not is_calljmp(actopcode) then
|
|
Message(asmr_e_syn_operand);
|
|
end;
|
|
|
|
AS_ID: { A constant expression, or a Variable ref. }
|
|
Begin
|
|
{ Local Label ? }
|
|
if is_locallabel(actasmpattern) then
|
|
begin
|
|
CreateLocalLabel(actasmpattern,hl,false);
|
|
Consume(AS_ID);
|
|
AddLabelOperand(hl);
|
|
MaybeGetPICModifier(oper);
|
|
end
|
|
else
|
|
{ Check for label }
|
|
if SearchLabel(actasmpattern,hl,false) then
|
|
begin
|
|
Consume(AS_ID);
|
|
AddLabelOperand(hl);
|
|
MaybeGetPICModifier(oper);
|
|
end
|
|
else
|
|
{ probably a variable or normal expression }
|
|
{ or a procedure (such as in CALL ID) }
|
|
Begin
|
|
{ is it a constant ? }
|
|
if SearchIConstant(actasmpattern,l) then
|
|
Begin
|
|
if not (oper.opr.typ in [OPR_NONE,OPR_CONSTANT]) then
|
|
Message(asmr_e_invalid_operand_type);
|
|
BuildConstantOperand(oper);
|
|
end
|
|
else
|
|
begin
|
|
expr:=actasmpattern;
|
|
Consume(AS_ID);
|
|
{ typecasting? }
|
|
if (actasmtoken=AS_LPAREN) and
|
|
SearchType(expr,typesize) then
|
|
begin
|
|
oper.hastype:=true;
|
|
Consume(AS_LPAREN);
|
|
BuildOperand(oper);
|
|
Consume(AS_RPAREN);
|
|
if oper.opr.typ in [OPR_REFERENCE,OPR_LOCAL] then
|
|
oper.SetSize(typesize,true);
|
|
end
|
|
else
|
|
begin
|
|
if oper.SetupVar(expr,false) then
|
|
MaybeGetPICModifier(oper)
|
|
else
|
|
Begin
|
|
{ look for special symbols ... }
|
|
if expr= '__HIGH' then
|
|
begin
|
|
consume(AS_LPAREN);
|
|
if not oper.setupvar('high'+actasmpattern,false) then
|
|
Message1(sym_e_unknown_id,'high'+actasmpattern);
|
|
consume(AS_ID);
|
|
consume(AS_RPAREN);
|
|
end
|
|
else
|
|
if expr = '__RESULT' then
|
|
oper.SetUpResult
|
|
else
|
|
if expr = '__SELF' then
|
|
oper.SetupSelf
|
|
else
|
|
if expr = '__OLDEBP' then
|
|
oper.SetupOldEBP
|
|
else
|
|
Message1(sym_e_unknown_id,expr);
|
|
end;
|
|
end;
|
|
end;
|
|
if oper.opr.typ<>OPR_NONE Then
|
|
begin
|
|
if (actasmtoken=AS_DOT) then
|
|
MaybeRecordOffset;
|
|
{ add a constant expression? }
|
|
if (actasmtoken=AS_PLUS) then
|
|
begin
|
|
l:=BuildConstExpression(true,false);
|
|
if errorcount=0 then
|
|
case oper.opr.typ of
|
|
OPR_CONSTANT :
|
|
inc(oper.opr.val,l);
|
|
OPR_LOCAL :
|
|
begin
|
|
inc(oper.opr.localsymofs,l);
|
|
inc(oper.opr.localconstoffset, l);
|
|
end;
|
|
OPR_REFERENCE :
|
|
begin
|
|
inc(oper.opr.ref.offset,l);
|
|
inc(oper.opr.constoffset, l);
|
|
end;
|
|
else
|
|
internalerror(2003092011);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
{ Do we have a indexing reference, then parse it also }
|
|
if actasmtoken=AS_LPAREN then
|
|
BuildReference(oper);
|
|
end;
|
|
|
|
AS_REGISTER: { Register, a variable reference or a constant reference }
|
|
Begin
|
|
{ save the type of register used. }
|
|
tempreg:=actasmregister;
|
|
Consume(AS_REGISTER);
|
|
if actasmtoken = AS_COLON then
|
|
Begin
|
|
Consume(AS_COLON);
|
|
oper.InitRef;
|
|
if not is_segment_reg(tempreg) then
|
|
Message(asmr_e_invalid_seg_override);
|
|
{$ifdef x86_64}
|
|
if (tempreg=NR_CS) or (tempreg=NR_DS) or (tempreg=NR_SS) or (tempreg=NR_ES) then
|
|
Message1(asmr_w_segment_override_ignored_in_64bit_mode,gas_regname(tempreg));
|
|
{$endif x86_64}
|
|
oper.opr.ref.segment:=tempreg;
|
|
{ This must absolutely be followed by a reference }
|
|
if not MaybeBuildReference then
|
|
Begin
|
|
Message(asmr_e_invalid_seg_override);
|
|
Consume(actasmtoken);
|
|
end;
|
|
end
|
|
{ Simple register }
|
|
else if (actasmtoken in [AS_END,AS_SEPARATOR,AS_COMMA]) then
|
|
Begin
|
|
if not (oper.opr.typ in [OPR_NONE,OPR_REGISTER]) then
|
|
Message(asmr_e_invalid_operand_type);
|
|
oper.opr.typ:=OPR_REGISTER;
|
|
oper.opr.reg:=tempreg;
|
|
oper.SetSize(tcgsize2size[reg_cgsize(oper.opr.reg)],true);
|
|
end
|
|
else
|
|
Message(asmr_e_syn_operand);
|
|
end;
|
|
AS_END,
|
|
AS_SEPARATOR,
|
|
AS_COMMA: ;
|
|
else
|
|
Begin
|
|
Message(asmr_e_syn_operand);
|
|
Consume(actasmtoken);
|
|
end;
|
|
end; { end case }
|
|
end;
|
|
|
|
|
|
procedure tx86attreader.BuildOpCode(instr : tx86instruction);
|
|
var
|
|
operandnum : longint;
|
|
PrefixOp,OverrideOp: tasmop;
|
|
di_param, si_param: ShortInt;
|
|
Begin
|
|
PrefixOp:=A_None;
|
|
OverrideOp:=A_None;
|
|
{ prefix seg opcode / prefix opcode }
|
|
repeat
|
|
if is_prefix(actopcode) then
|
|
begin
|
|
PrefixOp:=ActOpcode;
|
|
with instr do
|
|
begin
|
|
opcode:=ActOpcode;
|
|
condition:=ActCondition;
|
|
opsize:=ActOpsize;
|
|
ConcatInstruction(curlist);
|
|
end;
|
|
Consume(AS_OPCODE);
|
|
end
|
|
else
|
|
if is_override(actopcode) then
|
|
begin
|
|
OverrideOp:=ActOpcode;
|
|
with instr do
|
|
begin
|
|
opcode:=ActOpcode;
|
|
condition:=ActCondition;
|
|
opsize:=ActOpsize;
|
|
ConcatInstruction(curlist);
|
|
end;
|
|
Consume(AS_OPCODE);
|
|
end
|
|
else
|
|
break;
|
|
{ allow for newline as in gas styled syntax }
|
|
while actasmtoken=AS_SEPARATOR do
|
|
Consume(AS_SEPARATOR);
|
|
until (actasmtoken<>AS_OPCODE);
|
|
{ opcode }
|
|
if (actasmtoken<>AS_OPCODE) then
|
|
Begin
|
|
Message(asmr_e_invalid_or_missing_opcode);
|
|
RecoverConsume(true);
|
|
exit;
|
|
end;
|
|
{ Fill the instr object with the current state }
|
|
with instr do
|
|
begin
|
|
Opcode:=ActOpcode;
|
|
condition:=ActCondition;
|
|
opsize:=ActOpsize;
|
|
end;
|
|
|
|
{ Valid combination of prefix/override and instruction ? }
|
|
|
|
if (prefixop<>A_NONE) and (NOT CheckPrefix(PrefixOp,actopcode)) then
|
|
Message1(asmr_e_invalid_prefix_and_opcode,actasmpattern);
|
|
|
|
if (overrideop<>A_NONE) and (NOT CheckOverride(OverrideOp,ActOpcode)) then
|
|
Message1(asmr_e_invalid_override_and_opcode,actasmpattern);
|
|
{ We are reading operands, so opcode will be an AS_ID }
|
|
operandnum:=1;
|
|
Consume(AS_OPCODE);
|
|
{ Zero operand opcode ? }
|
|
if actasmtoken in [AS_SEPARATOR,AS_END] then
|
|
begin
|
|
operandnum:=0;
|
|
exit;
|
|
end;
|
|
{ Read the operands }
|
|
repeat
|
|
case actasmtoken of
|
|
AS_COMMA: { Operand delimiter }
|
|
Begin
|
|
if operandnum > Max_Operands then
|
|
Message(asmr_e_too_many_operands)
|
|
else
|
|
Inc(operandnum);
|
|
Consume(AS_COMMA);
|
|
end;
|
|
AS_SEPARATOR,
|
|
AS_END : { End of asm operands for this opcode }
|
|
begin
|
|
break;
|
|
end;
|
|
else
|
|
BuildOperand(instr.Operands[operandnum] as tx86operand);
|
|
end; { end case }
|
|
until false;
|
|
instr.Ops:=operandnum;
|
|
{ handle string instructions with parameters }
|
|
with instr do
|
|
if is_x86_parameterless_string_op(opcode) and
|
|
(Ops>=1) and (Ops<=2) then
|
|
begin
|
|
if opcode=A_MOVSD then
|
|
begin
|
|
{ distinguish between MOVS and the SSE MOVSD instruction:
|
|
MOVS must have memory 2 reference operands (there's no need
|
|
to distinguish from SSE CMPSD, because the SSE version has 3
|
|
arguments and we've already checked that above) }
|
|
if (Ops=2) and (operands[1].opr.typ=OPR_REFERENCE) and (operands[2].opr.typ=OPR_REFERENCE) then
|
|
begin
|
|
opcode:=A_MOVS;
|
|
opsize:=S_L;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
opsize:=get_x86_string_op_size(opcode);
|
|
opcode:=x86_param2paramless_string_op(opcode);
|
|
end;
|
|
end;
|
|
{ Check for invalid ES: overrides }
|
|
if is_x86_parameterized_string_op(instr.opcode) then
|
|
begin
|
|
si_param:=get_x86_string_op_si_param(instr.opcode);
|
|
if si_param<>-1 then
|
|
begin
|
|
si_param:=x86_parameterized_string_op_param_count(instr.opcode)-si_param;
|
|
if si_param<=operandnum then
|
|
with instr.operands[si_param] do
|
|
if (opr.typ=OPR_REFERENCE) then
|
|
begin
|
|
if not((((opr.ref.index<>NR_NO) and
|
|
(opr.ref.base=NR_NO) and
|
|
(getregtype(opr.ref.index)=R_INTREGISTER) and
|
|
(getsupreg(opr.ref.index)=RS_ESI)) or
|
|
((opr.ref.index=NR_NO) and
|
|
(opr.ref.base<>NR_NO) and
|
|
(getregtype(opr.ref.base)=R_INTREGISTER) and
|
|
(getsupreg(opr.ref.base)=RS_ESI))) and
|
|
(opr.ref.offset=0) and
|
|
(opr.ref.scalefactor<=1) and
|
|
(opr.ref.refaddr=addr_no) and
|
|
(opr.ref.symbol=nil) and
|
|
(opr.ref.relsymbol=nil)) then
|
|
{$if defined(i8086)}
|
|
Message1(asmr_w_invalid_reference,'(%si)');
|
|
{$elseif defined(i386)}
|
|
Message1(asmr_w_invalid_reference,'(%esi)');
|
|
{$elseif defined(x86_64)}
|
|
Message1(asmr_w_invalid_reference,'(%rsi)');
|
|
{$endif}
|
|
end;
|
|
end;
|
|
di_param:=get_x86_string_op_di_param(instr.opcode);
|
|
if di_param<>-1 then
|
|
begin
|
|
di_param:=x86_parameterized_string_op_param_count(instr.opcode)-di_param;
|
|
if di_param<=operandnum then
|
|
with instr.operands[di_param] do
|
|
if (opr.typ=OPR_REFERENCE) then
|
|
begin
|
|
if (opr.ref.segment<>NR_NO) and
|
|
(opr.ref.segment<>NR_ES) then
|
|
Message(asmr_e_cannot_override_es_segment);
|
|
if not((((opr.ref.index<>NR_NO) and
|
|
(opr.ref.base=NR_NO) and
|
|
(getregtype(opr.ref.index)=R_INTREGISTER) and
|
|
(getsupreg(opr.ref.index)=RS_EDI)) or
|
|
((opr.ref.index=NR_NO) and
|
|
(opr.ref.base<>NR_NO) and
|
|
(getregtype(opr.ref.base)=R_INTREGISTER) and
|
|
(getsupreg(opr.ref.base)=RS_EDI))) and
|
|
(opr.ref.offset=0) and
|
|
(opr.ref.scalefactor<=1) and
|
|
(opr.ref.refaddr=addr_no) and
|
|
(opr.ref.symbol=nil) and
|
|
(opr.ref.relsymbol=nil)) then
|
|
{$if defined(i8086)}
|
|
Message1(asmr_w_invalid_reference,'(%di)');
|
|
{$elseif defined(i386)}
|
|
Message1(asmr_w_invalid_reference,'(%edi)');
|
|
{$elseif defined(x86_64)}
|
|
Message1(asmr_w_invalid_reference,'(%rdi)');
|
|
{$endif}
|
|
end;
|
|
end;
|
|
{ if two memory parameters, check whether their address sizes are equal }
|
|
if (si_param<>-1) and (di_param<>-1) and
|
|
(si_param<=operandnum) and (di_param<=operandnum) and
|
|
(instr.operands[si_param].opr.typ=OPR_REFERENCE) and
|
|
(instr.operands[di_param].opr.typ=OPR_REFERENCE) then
|
|
begin
|
|
if get_ref_address_size(instr.operands[si_param].opr.ref)<>
|
|
get_ref_address_size(instr.operands[di_param].opr.ref) then
|
|
Message(asmr_e_address_sizes_do_not_match);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
function tx86attreader.is_asmopcode(const s: string):boolean;
|
|
var
|
|
cond : string[4];
|
|
cnd : tasmcond;
|
|
len,
|
|
j,
|
|
sufidx,
|
|
suflen : longint;
|
|
Begin
|
|
is_asmopcode:=FALSE;
|
|
|
|
actopcode:=A_None;
|
|
actcondition:=C_None;
|
|
actopsize:=S_NO;
|
|
|
|
{ search for all possible suffixes }
|
|
for sufidx:=low(att_sizesuffixstr) to high(att_sizesuffixstr) do
|
|
begin
|
|
suflen:=length(att_sizesuffixstr[sufidx]);
|
|
len:=length(s)-suflen;
|
|
if copy(s,len+1,suflen)=att_sizesuffixstr[sufidx] then
|
|
begin
|
|
{ Search opcodes }
|
|
if len>0 then
|
|
begin
|
|
actopcode:=tasmop(PtrUInt(iasmops.Find(copy(s,1,len))));
|
|
|
|
{ movsd needs special handling because it has two namings in at&t syntax (movsl for string handling and
|
|
movsd for the sse instruction) while only one in intel syntax (movsd, both string and sse)
|
|
this cannot be expressed by the instruction table format so we have to hack around this here }
|
|
if (actopcode = A_NONE) and (upper(s) = 'MOVSD') then
|
|
actopcode := A_MOVSD;
|
|
{ cmpsd also needs special handling for pretty much the same reasons as movsd }
|
|
if (actopcode = A_NONE) and (upper(s) = 'CMPSD') then
|
|
actopcode := A_CMPSD;
|
|
{ disambiguation between A_MOVS (movsb/movsw/movsl/movsq) and
|
|
A_MOVSX (movsbw/movsbl/movswl/movsbq/movswq) }
|
|
if (actopcode = A_MOVS) and (suflen=2) then
|
|
actopcode := A_MOVSX;
|
|
|
|
{ two-letter suffix is allowed by just a few instructions (movsx,movzx),
|
|
and it is always required whenever allowed }
|
|
if (gas_needsuffix[actopcode]=attsufINTdual) xor (suflen=2) then
|
|
continue;
|
|
|
|
if actopcode<>A_NONE then
|
|
begin
|
|
if gas_needsuffix[actopcode]=attsufFPU then
|
|
actopsize:=att_sizefpusuffix[sufidx]
|
|
else if gas_needsuffix[actopcode]=attsufFPUint then
|
|
actopsize:=att_sizefpuintsuffix[sufidx]
|
|
else if gas_needsuffix[actopcode]in[attsufMM,attsufMMS] then
|
|
actopsize:=att_sizemmsuffix[sufidx]
|
|
else if gas_needsuffix[actopcode]=attsufMMX then
|
|
actopsize:=att_sizemmXsuffix[sufidx]
|
|
else
|
|
actopsize:=att_sizesuffix[sufidx];
|
|
{ only accept suffix from the same category that the opcode belongs to }
|
|
if (actopsize<>S_NO) or (suflen=0) then
|
|
begin
|
|
actasmtoken:=AS_OPCODE;
|
|
is_asmopcode:=TRUE;
|
|
exit;
|
|
end;
|
|
end;
|
|
end;
|
|
{ not found, check condition opcodes }
|
|
j:=0;
|
|
while (j<CondAsmOps) do
|
|
begin
|
|
if Copy(s,1,Length(CondAsmOpStr[j]))=CondAsmOpStr[j] then
|
|
begin
|
|
cond:=Copy(s,Length(CondAsmOpStr[j])+1,len-Length(CondAsmOpStr[j]));
|
|
if cond<>'' then
|
|
begin
|
|
for cnd:=low(TasmCond) to high(TasmCond) do
|
|
if Cond=Upper(cond2str[cnd]) then
|
|
begin
|
|
actopcode:=CondASmOp[j];
|
|
{ conditional instructions (cmovcc, setcc) use only INT suffixes;
|
|
other stuff like fcmovcc is represented as group of individual instructions }
|
|
if gas_needsuffix[actopcode]=attsufINT then
|
|
actopsize:=att_sizesuffix[sufidx];
|
|
{ only accept suffix from the same category that the opcode belongs to }
|
|
if (actopsize<>S_NO) or (suflen=0) then
|
|
begin
|
|
actcondition:=cnd;
|
|
actasmtoken:=AS_OPCODE;
|
|
is_asmopcode:=TRUE;
|
|
exit;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
inc(j);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure tx86attreader.handleopcode;
|
|
var
|
|
instr : Tx86Instruction;
|
|
begin
|
|
instr:=Tx86attInstruction.Create(Tx86Operand);
|
|
BuildOpcode(instr);
|
|
instr.AddReferenceSizes;
|
|
instr.SetInstructionOpsize;
|
|
instr.CheckOperandSizes;
|
|
instr.FixupOpcode;
|
|
instr.ConcatInstruction(curlist);
|
|
instr.Free;
|
|
end;
|
|
|
|
|
|
|
|
end.
|