home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / bin / readme.alp < prev    next >
Text File  |  1999-05-11  |  22KB  |  449 lines

  1. _______________________________________________________________________________
  2.  
  3. ASSEMBLY LANGUAGE PROCESSOR (ALP) VERSION 4.00.006 README FILE
  4. _______________________________________________________________________________
  5.  
  6. Welcome to the IBM Assembly Language Processor for OS/2 Warp (hereafter
  7. referred to as ALP).  Full documentation for ALP is provided in the online 
  8. manual titled "ALP Programming Guide and Reference".  This README file provides
  9. supplemental or errata information not documented in the online manual.
  10.  
  11. The information contained in this README describes a specific version of ALP.
  12. You should verify that the version number displayed in both the ALP program
  13. banner and in the heading of this document agree before using the information
  14. contained herein.  The ALP version number can be displayed by executing the
  15. command:  "alp +mb".
  16.  
  17. Use a non-proportional font to view this file.
  18.  
  19. _______________________________________________________________________________
  20.  
  21. CONTENTS
  22. _______________________________________________________________________________
  23.  
  24.   This document contains the following sections:
  25.  
  26.   - Changes in Release 4.00.006
  27.   - Changes in Release 4.00.005
  28.   - Changes in Release 4.00.004
  29.   - Changes in Release 4.00.003
  30.   - MASM 5.10 Compatibility
  31.   - MASM 6.00 Compatibility
  32.   - Table of Assembler Directives Supported by ALP, MASM 5.10, and MASM 6.00
  33.   - Known Problems or Incompatibilities
  34.   - Support Information
  35.  
  36.  
  37. Changes in Release 4.00.006
  38. _______________________________________________________________________________
  39.  
  40.     - No new programming features have been added in this release.
  41.  
  42.     - Fixed abnormal termination (access violation) after issuing error
  43.       messages for certain types of syntax errors.
  44.  
  45.     - Better recovery of code generator after emitting message ALP3225.
  46.  
  47.     - Fixed incorrect generation of RET instructions in PROC epilogues.
  48.  
  49.  
  50. Changes in Release 4.00.005
  51. _______________________________________________________________________________
  52.  
  53.     - The assembler no longer emulates MASM 5.10 by default.  If you don't
  54.       currently use an explicit -Sv:XXX command line option, you may need to
  55.       make some changes to your code so that it will assemble in the default
  56.       mode (now -Sv:ALP), or specify an explicit -Sv:M510 to enable the old
  57.       MASM 5.10 behaviors.
  58.  
  59.     - Several new MASM 6.00 constructs have been added:
  60.  
  61.       - The EXTERNDEF, UNION, and OPTION directives are now supported.
  62.       - The LENGTHOF, SIZEOF, and OPATTR operators are now supported.
  63.       - The various "language" keywords (BASIC, C, PASCAL, SYSCALL, etc.)
  64.         are now supported on the COMM, EXTERN, PUBLIC, and PROC directives.
  65.       - The EXPORT keyword is now supported as an argument to the PROC
  66.         directive.
  67.       - Structure and union types may now be imbedded within other structure
  68.         and union types.
  69.       - Support for true arrays, a feature not offered by other assemblers.
  70.         The type declaration syntax has been extended to accept a new array
  71.         dimension declarator.  This syntax can be used with the ASSUME, EXTERN,
  72.         LABEL, PROC arg, PROC LOCAL, and TYPEDEF directives to reference
  73.         single- or multi-dimensional array types.  The TYPEDEF directive can
  74.         be used to define a named alias for an array type; such alias names
  75.         can then be used to create and initialize array variables.  Array
  76.         variables created in this fashion can easily be viewed during program
  77.         execution from within a source-level debugger.
  78.  
  79.     - Support for the Pentium Pro instruction set is included in this release.
  80.  
  81.     - Improvements have been made to the symbolic debugging output, including
  82.       support for bitfields created with the RECORD directive.
  83.  
  84.     - Improvements to the online documentation.
  85.  
  86.     - Numerous other bug fixes and compatibility enhancements.
  87.  
  88.  
  89. Changes in Release 4.00.004
  90. _______________________________________________________________________________
  91.  
  92.     - Fixed a problem where text equate names appearing in the first position
  93.       were being expanded inside of false conditional blocks.
  94.  
  95.     - Certain types of pointers were not being correctly represented in the
  96.       type table of the symbolic debugging information, and therefore could
  97.       not be interpreted by the debugger.
  98.  
  99.     - Procedure descriptors were not correctly represented in the symbol table
  100.       of the symbolic debugging information.  As a result, procedure names
  101.       would not appear in the debugger control panel.
  102.     
  103.  
  104. Changes in Release 4.00.003
  105. _______________________________________________________________________________
  106.  
  107.     - No new programming features have been added in this release.
  108.  
  109.     - Some corrections and additions were made to the ALPREF.INF online
  110.       reference manual.
  111.  
  112.     - The handling of text equates during macro expansions has been changed
  113.       for better compatibility with MASM.  Text equates can now be used in
  114.       "paste" operations using the ampersand (&) operator, similar to the
  115.       normal handling of macro replacement arguments.
  116.  
  117.     - Better handling of identifiers that begin with a period (.) character.
  118.  
  119.     - Some situations that could cause phase errors during assembly were
  120.       corrected.
  121.  
  122.     - ALP no longer emits an object file reference to the reserved group-name
  123.       "FLAT" unless it is referenced in the assembly source module.
  124.  
  125.     - Relaxed syntax requirements for EXTRN directive and several IFxxx
  126.       preprocessor directives to allow for missing operands under MASM 5.10
  127.       emulation.
  128.  
  129.     - Fixed some code generation problems in the PROC prologue and epilogue
  130.       handlers.
  131.       
  132.     - Numerous other bug fixes and compatibility enhancements.
  133.  
  134.  
  135. MASM 5.10 Compatibility
  136. _______________________________________________________________________________
  137.  
  138.   In most respects, ALP is a "MASM 5.10 Source Language Compatible" assembler.
  139.   It is not, however, a direct "drop-in" replacement for MASM.  This section
  140.   describes some things to be aware of when using ALP as a replacement for MASM.
  141.  
  142.     ---------------------------------------------------------------------------
  143.     ALP does not use the same command line syntax as MASM 5.10 (or MASM 6.00).
  144.     The MASM2ALP utility is provided to allow use of ALP in existing MASM 5.10
  145.     build environments.  Refer to the online reference manual for details.
  146.  
  147.     ---------------------------------------------------------------------------
  148.     Unlike MASM, ALP by default is case-sensitive with respect to user defined
  149.     identifiers (assembler reserved words are case-insensitive by default).  If
  150.     case-insensitive assembly is desired, use the -Sc command line switch.
  151.  
  152.     ---------------------------------------------------------------------------
  153.     ALP currently supports all MASM 5.10 constructs except:
  154.  
  155.       - Alphabetic segment ordering (the .ALPHA directive)
  156.  
  157.       - Symbol cross referencing and the associated listing file directives
  158.         (.CREF and .XCREF)
  159.  
  160.     ---------------------------------------------------------------------------
  161.     Forward-referenced Unconditional Jumps
  162.  
  163.     On the first pass, both assemblers assume that the target of a forward
  164.     referenced direct conditional JMP is of NEAR distance, and both reserve
  165.     space to allow for a 16 bit displacement field.  If on the second pass it
  166.     is determined that the target can be reached using a distance of SHORT, an
  167.     8 bit displacement and a single NOP byte are generated to fill in the space
  168.     allotted on the first pass.  This is normal behavior for both assemblers.
  169.  
  170.     If however, the same (SHORT) target was specified in the JMP statement
  171.     using a "NEAR PTR" typecast override, MASM 5.10 ignores the override and
  172.     generates the same aforementioned code.  ALP however, respects the typecast
  173.     operation and generates a true 16 bit displacement, which is also the
  174.     behavior exhibited by MASM 6.0.  In the unlikely event that a program
  175.     depends upon the MASM 5.10 behavior, it will probably not operate correctly
  176.     when assembled with ALP.
  177.  
  178.  
  179. MASM 6.00 Compatibility
  180. _______________________________________________________________________________
  181.  
  182.     ALP supports a limited level of compatibility with MASM 6.00.  Use of the
  183.     -Sv:M600 command line option will enable this support.  The cross-reference
  184.     table provided below lists the MASM 6.00 directives that are enabled when
  185.     this option is used.  Additional changes in behavior include:
  186.  
  187.     -  Stricter error checking.  Many conditions reported as warnings under
  188.        MASM 5.10 emulation are treated as errors under MASM 6.00 emulation.
  189.  
  190.     -  Visibility of MASM 6.00 keywords is enabled (see the online reference
  191.        for details).  Note that visibility of processor related keywords is
  192.        limited to only those that MASM 6.00 itself recognizes; support for
  193.        newer processors with the .586, .586P, .686, .686P, and .MMX directives
  194.        is not enabled unless the -Sv:ALP option is used to turn off MASM
  195.        emulation.
  196.  
  197.     While both ML (MASM 6.00) and ALP support assembly of multiple input files
  198.     with a single command line invocation, ALP does not support the "compile
  199.     and link" capability of ML.  ALP treats all filenames found on the command
  200.     line as input source files, and does not look at the filename extension to
  201.     determine the file "type".
  202.  
  203.  
  204. Table of Assembler Directives Supported by ALP, MASM 5.10, and MASM 6.00
  205. _______________________________________________________________________________
  206.  
  207.     "X" - Supported
  208.     "-" - Recognized but ignored
  209.  
  210.       DIRECTIVE         ALP     MASM 5.1  MASM 6.0
  211.     ┌────────────────┬─────────┬─────────┬─────────┐
  212.     │  %BIN          │    X    │    X    │    X    │
  213.     │  %OUT          │    X    │    X    │    X    │
  214.     │  .186          │    X    │    X    │    X    │
  215.     │  .286          │    X    │    X    │    X    │
  216.     │  .286P         │    X    │    X    │    X    │
  217.     │  .287          │    X    │    X    │    X    │
  218.     │  .386          │    X    │    X    │    X    │
  219.     │  .386P         │    X    │    X    │    X    │
  220.     │  .387          │    X    │    X    │    X    │
  221.     │  .486          │    X    │         │    X    │
  222.     │  .486P         │    X    │         │    X    │
  223.     │  .586          │    X    │         │         │
  224.     │  .586P         │    X    │         │         │
  225.     │  .686          │    X    │         │         │
  226.     │  .686P         │    X    │         │         │
  227.     │  .8086         │    X    │    X    │    X    │
  228.     │  .8087         │    X    │    X    │    X    │
  229.     │  .ABORT        │    X    │         │         │
  230.     │  .ALPHA        │    -    │    X    │    X    │
  231.     │  .BREAK        │         │         │    X    │
  232.     │  .CODE         │    X    │    X    │    X    │
  233.     │  .CONST        │    X    │    X    │    X    │
  234.     │  .CONTINUE     │         │         │    X    │
  235.     │  .CREF         │    -    │    X    │    X    │
  236.     │  .DATA         │    X    │    X    │    X    │
  237.     │  .DATA?        │    X    │    X    │    X    │
  238.     │  .DOSSEG       │    X    │         │    X    │
  239.     │  .ELSE         │         │         │    X    │
  240.     │  .ELSEIF       │         │         │    X    │
  241.     │  .ENDIF        │         │         │    X    │
  242.     │  .ENDW         │         │         │    X    │
  243.     │  .ERR          │    X    │    X    │    X    │
  244.     │  .ERR1         │    X    │    X    │    X    │
  245.     │  .ERR2         │    X    │    X    │    X    │
  246.     │  .ERRB         │    X    │    X    │    X    │
  247.     │  .ERRDEF       │    X    │    X    │    X    │
  248.     │  .ERRDIF       │    X    │    X    │    X    │
  249.     │  .ERRDIFI      │    X    │    X    │    X    │
  250.     │  .ERRE         │    X    │    X    │    X    │
  251.     │  .ERRIDN       │    X    │    X    │    X    │
  252.     │  .ERRIDNI      │    X    │    X    │    X    │
  253.     │  .ERRNB        │    X    │    X    │    X    │
  254.     │  .ERRNDEF      │    X    │    X    │    X    │
  255.     │  .ERRNZ        │    X    │    X    │    X    │
  256.     │  .FARDATA      │    X    │    X    │    X    │
  257.     │  .FARDATA?     │    X    │    X    │    X    │
  258.     │  .IF           │         │         │    X    │
  259.     │  .LALL         │    X    │    X    │    X    │
  260.     │  .LFCOND       │    X    │    X    │    X    │
  261.     │  .LIST         │    X    │    X    │    X    │
  262.     │  .LISTALL      │    X    │         │    X    │
  263.     │  .LISTIF       │    X    │         │    X    │
  264.     │  .LISTMACRO    │    X    │         │    X    │
  265.     │  .LISTMACROALL │    X    │         │    X    │
  266.     │  .MODEL        │    X    │    X    │    X    │
  267.     │  .MMX          │    X    │         │         │
  268.     │  .NOLIST       │    X    │         │    X    │
  269.     │  .NOLISTIF     │    X    │         │    X    │
  270.     │  .NOLISTMACRO  │    X    │         │    X    │
  271.     │  .NOMMX        │    X    │         │         │
  272.     │  .NO87         │         │         │    X    │
  273.     │  .POPCONTEXT   │         │         │    X    │
  274.     │  .PUSHCONTEXT  │         │         │    X    │
  275.     │  .RADIX        │    X    │    X    │    X    │
  276.     │  .REPEAT       │         │         │    X    │
  277.     │  .SALL         │    X    │    X    │    X    │
  278.     │  .SEQ          │    X    │    X    │    X    │
  279.     │  .SFCOND       │    X    │    X    │    X    │
  280.     │  .STACK        │    X    │    X    │    X    │
  281.     │  .STARTUP      │         │         │    X    │
  282.     │  .TFCOND       │    X    │    X    │    X    │
  283.     │  .UNTIL        │         │         │    X    │
  284.     │  .UNTILCXZ     │         │         │    X    │
  285.     │  .WHILE        │         │         │    X    │
  286.     │  .XALL         │    X    │    X    │    X    │
  287.     │  .XCREF        │    -    │    X    │    X    │
  288.     │  .XLIST        │    X    │    X    │    X    │
  289.     │  ALIGN         │    X    │    X    │    X    │
  290.     │  ASSUME        │    X    │    X    │    X    │
  291.     │  BYTE          │    X    │         │    X    │
  292.     │  CATSTR        │    X    │    X    │    X    │
  293.     │  COMM          │    X    │    X    │    X    │
  294.     │  COMMENT       │    X    │    X    │    X    │
  295.     │  DB            │    X    │    X    │    X    │
  296.     │  DD            │    X    │    X    │    X    │
  297.     │  DF            │    X    │    X    │    X    │
  298.     │  DOSSEG        │    X    │    X    │    X    │
  299.     │  DQ            │    X    │    X    │    X    │
  300.     │  DT            │    X    │    X    │    X    │
  301.     │  DW            │    X    │    X    │    X    │
  302.     │  DWORD         │    X    │         │    X    │
  303.     │  ECHO          │    X    │         │    X    │
  304.     │  ELSE          │    X    │    X    │    X    │
  305.     │  ELSEIF        │    X    │    X    │    X    │
  306.     │  ELSEIF1       │    X    │    X    │    X    │
  307.     │  ELSEIF2       │    X    │    X    │    X    │
  308.     │  ELSEIFB       │    X    │    X    │    X    │
  309.     │  ELSEIFDEF     │    X    │    X    │    X    │
  310.     │  ELSEIFDIF     │    X    │    X    │    X    │
  311.     │  ELSEIFDIFI    │    X    │    X    │    X    │
  312.     │  ELSEIFE       │    X    │    X    │    X    │
  313.     │  ELSEIFIDN     │    X    │    X    │    X    │
  314.     │  ELSEIFIDNI    │    X    │    X    │    X    │
  315.     │  ELSEIFNB      │    X    │    X    │    X    │
  316.     │  ELSEIFNDEF    │    X    │    X    │    X    │
  317.     │  END           │    X    │    X    │    X    │
  318.     │  ENDIF         │    X    │    X    │    X    │
  319.     │  ENDM          │    X    │    X    │    X    │
  320.     │  ENDP          │    X    │    X    │    X    │
  321.     │  ENDS          │    X    │    X    │    X    │
  322.     │  =             │    X    │    X    │    X    │
  323.     │  EQU           │    X    │    X    │    X    │
  324.     │  EVEN          │    X    │    X    │    X    │
  325.     │  EXITM         │    X    │    X    │    X    │
  326.     │  EXTERN        │    X    │         │    X    │
  327.     │  EXTERNDEF     │    X    │         │    X    │
  328.     │  EXTRN         │    X    │    X    │    X    │
  329.     │  FOR           │    X    │         │    X    │
  330.     │  FORC          │    X    │         │    X    │
  331.     │  FWORD         │    X    │         │    X    │
  332.     │  GROUP         │    X    │    X    │    X    │
  333.     │  IF            │    X    │    X    │    X    │
  334.     │  IF1           │    X    │    X    │    X    │
  335.     │  IF2           │    X    │    X    │    X    │
  336.     │  IFB           │    X    │    X    │    X    │
  337.     │  IFDEF         │    X    │    X    │    X    │
  338.     │  IFDIF         │    X    │    X    │    X    │
  339.     │  IFDIFI        │    X    │    X    │    X    │
  340.     │  IFE           │    X    │    X    │    X    │
  341.     │  IFIDN         │    X    │    X    │    X    │
  342.     │  IFIDNI        │    X    │    X    │    X    │
  343.     │  IFNB          │    X    │    X    │    X    │
  344.     │  IFNDEF        │    X    │    X    │    X    │
  345.     │  INCLUDE       │    X    │    X    │    X    │
  346.     │  INCLUDELIB    │    X    │    X    │    X    │
  347.     │  INSTR         │    X    │    X    │    X    │
  348.     │  INVOKE        │         │         │    X    │
  349.     │  IRP           │    X    │    X    │    X    │
  350.     │  IRPC          │    X    │    X    │    X    │
  351.     │  LABEL         │    X    │    X    │    X    │
  352.     │  LOCAL (1)     │    X    │    X    │    X    │
  353.     │  LOCAL (2)     │    X    │    X    │    X    │
  354.     │  MACRO         │    X    │    X    │    X    │
  355.     │  NAME  (3)     │    -    │    -    │    -    │
  356.     │  .NOCREF       │    -    │         │    X    │
  357.     │  .NOLIST       │    X    │         │    X    │
  358.     │  .NOLISTIF     │    X    │         │    X    │
  359.     │  .NOLISTMACRO  │    X    │         │    X    │
  360.     │  ORG           │    X    │    X    │    X    │
  361.     │  PAGE          │    X    │    X    │    X    │
  362.     │  PROC          │    X    │    X    │    X    │
  363.     │  PROTO         │         │         │    X    │
  364.     │  PUBLIC        │    X    │    X    │    X    │
  365.     │  PURGE         │    X    │    X    │    X    │
  366.     │  QWORD         │    X    │         │    X    │
  367.     │  REAL10        │    X    │         │    X    │
  368.     │  REAL4         │    X    │         │    X    │
  369.     │  REAL8         │    X    │         │    X    │
  370.     │  RECORD        │    X    │    X    │    X    │
  371.     │  REPEAT        │    X    │         │    X    │
  372.     │  REPT          │    X    │    X    │    X    │
  373.     │  SBYTE         │    X    │         │    X    │
  374.     │  SDWORD        │    X    │         │    X    │
  375.     │  SEGMENT       │    X    │    X    │    X    │
  376.     │  SIZESTR       │    X    │    X    │    X    │
  377.     │  STRUC         │    X    │    X    │    X    │
  378.     │  STRUCT        │    X    │         │    X    │
  379.     │  SUBSTR        │    X    │    X    │    X    │
  380.     │  SUBTITLE      │    X    │         │    X    │
  381.     │  SUBTTL        │    X    │    X    │    X    │
  382.     │  SWORD         │    X    │         │    X    │
  383.     │  TBYTE         │    X    │    X    │    X    │
  384.     │  TEXTEQU       │         │         │    X    │
  385.     │  TITLE         │    X    │    X    │    X    │
  386.     │  TYPEDEF       │    X    │         │    X    │
  387.     │  UNION         │    X    │         │    X    │
  388.     │  WHILE         │         │         │    X    │
  389.     │  WORD          │    X    │         │    X    │
  390.     └────────────────┴─────────┴─────────┴─────────┘
  391.  
  392.     Notes:  1. Local macro labels
  393.             2. Local stack variables
  394.             3. Obsolete directive
  395.  
  396.  
  397. Known Problems or Incompatibilities
  398. _______________________________________________________________________________
  399.  
  400.     - The assembler does not recognize floating-point literals beginning with
  401.       a period.  If this affects your code, prefix such literals with 0.
  402.  
  403.     - The ALIGN, EVEN, and ORG directives cannot be used within a structure
  404.       type definition.
  405.  
  406.  
  407. Support Information
  408. _______________________________________________________________________________
  409.  
  410.   If you encounter problems or need assistance while using ALP, refer to the
  411.   "Toolkit Support" procedures in the online document "Using Your Toolkit".
  412.  
  413.  
  414. _______________________________________________________________________________
  415.  
  416. TRADEMARK INFORMATION
  417. _______________________________________________________________________________
  418.  
  419. The following terms are trademarks of the IBM Corporation in the United
  420. States or other countries or both:
  421.  
  422.    -------------------------------------------------------
  423.    IBM
  424.    -------------------------------------------------------
  425.    OS/2
  426.    -------------------------------------------------------
  427.  
  428. The following terms are trademarks of other companies:
  429.  
  430.    -------------------------------------------------------
  431.    Intel386                    Intel
  432.    Pentium                     Intel
  433.    Pentium Pro                 Intel
  434.    MMX                         Intel
  435.    -------------------------------------------------------
  436.  
  437. IBM DISCLAIMS ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING
  438. WITHOUT LIMITATION, WARRANTIES OF FITNESS AND MERCHANTABILITY WITH
  439. RESPECT TO THE INFORMATION IN THIS DOCUMENT.  BY FURNISHING THIS
  440. DOCUMENT, IBM GRANTS NO LICENSES TO ANY RELATED PATENTS OR COPYRIGHTS.
  441.  
  442. Copyright IBM Corporation, 1996-1998.  All rights reserved.
  443.  
  444. _______________________________________________________________________________
  445.  
  446. END-OF-FILE README.ALP
  447. _______________________________________________________________________________
  448.  
  449.