as: TIC54X-Directives

 
 9.44.9 Directives
 -----------------
 
 '.align [SIZE]'
 '.even'
      Align the section program counter on the next boundary, based on
      SIZE.  SIZE may be any power of 2.  '.even' is equivalent to
      '.align' with a SIZE of 2.
      '1'
           Align SPC to word boundary
      '2'
           Align SPC to longword boundary (same as .even)
      '128'
           Align SPC to page boundary
 
 '.asg STRING, NAME'
      Assign NAME the string STRING.  String replacement is performed on
      STRING before assignment.
 
 '.eval STRING, NAME'
      Evaluate the contents of string STRING and assign the result as a
      string to the subsym NAME.  String replacement is performed on
      STRING before assignment.
 
 '.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
      Reserve space for SYMBOL in the .bss section.  SIZE is in words.
      If present, BLOCKING_FLAG indicates the allocated space should be
      aligned on a page boundary if it would otherwise cross a page
      boundary.  If present, ALIGNMENT_FLAG causes the assembler to
      allocate SIZE on a long word boundary.
 
 '.byte VALUE [,...,VALUE_N]'
 '.ubyte VALUE [,...,VALUE_N]'
 '.char VALUE [,...,VALUE_N]'
 '.uchar VALUE [,...,VALUE_N]'
      Place one or more bytes into consecutive words of the current
      section.  The upper 8 bits of each word is zero-filled.  If a label
      is used, it points to the word allocated for the first byte
      encountered.
 
 '.clink ["SECTION_NAME"]'
      Set STYP_CLINK flag for this section, which indicates to the linker
      that if no symbols from this section are referenced, the section
      should not be included in the link.  If SECTION_NAME is omitted,
      the current section is used.
 
 '.c_mode'
      TBD.
 
 '.copy "FILENAME" | FILENAME'
 '.include "FILENAME" | FILENAME'
      Read source statements from FILENAME.  The normal include search
      path is used.  Normally .copy will cause statements from the
      included file to be printed in the assembly listing and .include
      will not, but this distinction is not currently implemented.
 
 '.data'
      Begin assembling code into the .data section.
 
 '.double VALUE [,...,VALUE_N]'
 '.ldouble VALUE [,...,VALUE_N]'
 '.float VALUE [,...,VALUE_N]'
 '.xfloat VALUE [,...,VALUE_N]'
      Place an IEEE single-precision floating-point representation of one
      or more floating-point values into the current section.  All but
      '.xfloat' align the result on a longword boundary.  Values are
      stored most-significant word first.
 
 '.drlist'
 '.drnolist'
      Control printing of directives to the listing file.  Ignored.
 
 '.emsg STRING'
 '.mmsg STRING'
 '.wmsg STRING'
      Emit a user-defined error, message, or warning, respectively.
 
 '.far_mode'
      Use extended addressing when assembling statements.  This should
      appear only once per file, and is equivalent to the -mfar-mode
      option See'-mfar-mode' TIC54X-Opts.
 
 '.fclist'
 '.fcnolist'
      Control printing of false conditional blocks to the listing file.
 
 '.field VALUE [,SIZE]'
      Initialize a bitfield of SIZE bits in the current section.  If
      VALUE is relocatable, then SIZE must be 16.  SIZE defaults to 16
      bits.  If VALUE does not fit into SIZE bits, the value will be
      truncated.  Successive '.field' directives will pack starting at
      the current word, filling the most significant bits first, and
      aligning to the start of the next word if the field size does not
      fit into the space remaining in the current word.  A '.align'
      directive with an operand of 1 will force the next '.field'
      directive to begin packing into a new word.  If a label is used, it
      points to the word that contains the specified field.
 
 '.global SYMBOL [,...,SYMBOL_N]'
 '.def SYMBOL [,...,SYMBOL_N]'
 '.ref SYMBOL [,...,SYMBOL_N]'
      '.def' nominally identifies a symbol defined in the current file
      and available to other files.  '.ref' identifies a symbol used in
      the current file but defined elsewhere.  Both map to the standard
      '.global' directive.
 
 '.half VALUE [,...,VALUE_N]'
 '.uhalf VALUE [,...,VALUE_N]'
 '.short VALUE [,...,VALUE_N]'
 '.ushort VALUE [,...,VALUE_N]'
 '.int VALUE [,...,VALUE_N]'
 '.uint VALUE [,...,VALUE_N]'
 '.word VALUE [,...,VALUE_N]'
 '.uword VALUE [,...,VALUE_N]'
      Place one or more values into consecutive words of the current
      section.  If a label is used, it points to the word allocated for
      the first value encountered.
 
 '.label SYMBOL'
      Define a special SYMBOL to refer to the load time address of the
      current section program counter.
 
 '.length'
 '.width'
      Set the page length and width of the output listing file.  Ignored.
 
 '.list'
 '.nolist'
      Control whether the source listing is printed.  Ignored.
 
 '.long VALUE [,...,VALUE_N]'
 '.ulong VALUE [,...,VALUE_N]'
 '.xlong VALUE [,...,VALUE_N]'
      Place one or more 32-bit values into consecutive words in the
      current section.  The most significant word is stored first.
      '.long' and '.ulong' align the result on a longword boundary;
      'xlong' does not.
 
 '.loop [COUNT]'
 '.break [CONDITION]'
 '.endloop'
      Repeatedly assemble a block of code.  '.loop' begins the block, and
      '.endloop' marks its termination.  COUNT defaults to 1024, and
      indicates the number of times the block should be repeated.
      '.break' terminates the loop so that assembly begins after the
      '.endloop' directive.  The optional CONDITION will cause the loop
      to terminate only if it evaluates to zero.
 
 'MACRO_NAME .macro [PARAM1][,...PARAM_N]'
 '[.mexit]'
 '.endm'
      See the section on macros for more explanation (See
      TIC54X-Macros.
 
 '.mlib "FILENAME" | FILENAME'
      Load the macro library FILENAME.  FILENAME must be an archived
      library (BFD ar-compatible) of text files, expected to contain only
      macro definitions.  The standard include search path is used.
 
 '.mlist'
 '.mnolist'
      Control whether to include macro and loop block expansions in the
      listing output.  Ignored.
 
 '.mmregs'
      Define global symbolic names for the 'c54x registers.  Supposedly
      equivalent to executing '.set' directives for each register with
      its memory-mapped value, but in reality is provided only for
      compatibility and does nothing.
 
 '.newblock'
      This directive resets any TIC54X local labels currently defined.
      Normal 'as' local labels are unaffected.
 
 '.option OPTION_LIST'
      Set listing options.  Ignored.
 
 '.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
      Designate SECTION_NAME for blocking.  Blocking guarantees that a
      section will start on a page boundary (128 words) if it would
      otherwise cross a page boundary.  Only initialized sections may be
      designated with this directive.  See also SeeTIC54X-Block.
 
 '.sect "SECTION_NAME"'
      Define a named initialized section and make it the current section.
 
 'SYMBOL .set "VALUE"'
 'SYMBOL .equ "VALUE"'
      Equate a constant VALUE to a SYMBOL, which is placed in the symbol
      table.  SYMBOL may not be previously defined.
 
 '.space SIZE_IN_BITS'
 '.bes SIZE_IN_BITS'
      Reserve the given number of bits in the current section and
      zero-fill them.  If a label is used with '.space', it points to the
      *first* word reserved.  With '.bes', the label points to the *last*
      word reserved.
 
 '.sslist'
 '.ssnolist'
      Controls the inclusion of subsym replacement in the listing output.
      Ignored.
 
 '.string "STRING" [,...,"STRING_N"]'
 '.pstring "STRING" [,...,"STRING_N"]'
      Place 8-bit characters from STRING into the current section.
      '.string' zero-fills the upper 8 bits of each word, while
      '.pstring' puts two characters into each word, filling the
      most-significant bits first.  Unused space is zero-filled.  If a
      label is used, it points to the first word initialized.
 
 '[STAG] .struct [OFFSET]'
 '[NAME_1] element [COUNT_1]'
 '[NAME_2] element [COUNT_2]'
 '[TNAME] .tag STAGX [TCOUNT]'
 '...'
 '[NAME_N] element [COUNT_N]'
 '[SSIZE] .endstruct'
 'LABEL .tag [STAG]'
      Assign symbolic offsets to the elements of a structure.  STAG
      defines a symbol to use to reference the structure.  OFFSET
      indicates a starting value to use for the first element
      encountered; otherwise it defaults to zero.  Each element can have
      a named offset, NAME, which is a symbol assigned the value of the
      element's offset into the structure.  If STAG is missing, these
      become global symbols.  COUNT adjusts the offset that many times,
      as if 'element' were an array.  'element' may be one of '.byte',
      '.word', '.long', '.float', or any equivalent of those, and the
      structure offset is adjusted accordingly.  '.field' and '.string'
      are also allowed; the size of '.field' is one bit, and '.string' is
      considered to be one word in size.  Only element descriptors,
      structure/union tags, '.align' and conditional assembly directives
      are allowed within '.struct'/'.endstruct'.  '.align' aligns member
      offsets to word boundaries only.  SSIZE, if provided, will always
      be assigned the size of the structure.
 
      The '.tag' directive, in addition to being used to define a
      structure/union element within a structure, may be used to apply a
      structure to a symbol.  Once applied to LABEL, the individual
      structure elements may be applied to LABEL to produce the desired
      offsets using LABEL as the structure base.
 
 '.tab'
      Set the tab size in the output listing.  Ignored.
 
 '[UTAG] .union'
 '[NAME_1] element [COUNT_1]'
 '[NAME_2] element [COUNT_2]'
 '[TNAME] .tag UTAGX[,TCOUNT]'
 '...'
 '[NAME_N] element [COUNT_N]'
 '[USIZE] .endstruct'
 'LABEL .tag [UTAG]'
      Similar to '.struct', but the offset after each element is reset to
      zero, and the USIZE is set to the maximum of all defined elements.
      Starting offset for the union is always zero.
 
 '[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
      Reserve space for variables in a named, uninitialized section
      (similar to .bss).  '.usect' allows definitions sections
      independent of .bss.  SYMBOL points to the first location reserved
      by this allocation.  The symbol may be used as a variable name.
      SIZE is the allocated size in words.  BLOCKING_FLAG indicates
      whether to block this section on a page boundary (128 words) (See
      TIC54X-Block).  ALIGNMENT FLAG indicates whether the section
      should be longword-aligned.
 
 '.var SYM[,..., SYM_N]'
      Define a subsym to be a local variable within a macro.  See See
      TIC54X-Macros.
 
 '.version VERSION'
      Set which processor to build instructions for.  Though the
      following values are accepted, the op is ignored.
      '541'
      '542'
      '543'
      '545'
      '545LP'
      '546LP'
      '548'
      '549'