MSP430 Assembly Language Tools v15.9.0.STS User's Guide
SLAU131 - REVISED SEPTEMBER, 2015

9 Absolute Lister Description

The MSP430 absolute lister is a debugging tool that accepts linked object files as input and creates .abs files as output. These .abs files can be assembled to produce a listing that shows the absolute addresses of object code. Manually, this could be a tedious process requiring many operations; however, the absolute lister utility performs these operations automatically.

9.1 Producing an Absolute Listing

Figure 9-1 illustrates the steps required to produce an absolute listing.

Figure 9-1 Absolute Lister Development Flow absoflow_tdz076.gif

9.2 Invoking the Absolute Lister

The syntax for invoking the absolute lister is:

abs430 [-options] input file
abs430 is the command that invokes the absolute lister.
options identifies the absolute lister options that you want to use. Options are not case sensitive and can appear anywhere on the command line following the command. Precede each option with a hyphen (-). The absolute lister options are as follows:
-e enables you to change the default naming conventions for filename extensions on assembly files, C source files, and C header files. The valid options are:

  • ea [.]asmext for assembly files (default is .asm)
  • ec [.]cext for C source files (default is .c)
  • eh [.]hext for C header files (default is .h)
  • ep [.]pext for CPP source files (default is cpp)
The . in the extensions and the space between the option and the extension are optional.
-q (quiet) suppresses the banner and all progress information.
input file names the linked object file. If you do not supply an extension, the absolute lister assumes that the input file has the default extension .out. If you do not supply an input filename when you invoke the absolute lister, the absolute lister prompts you for one.

The absolute lister produces an output file for each file that was linked. These files are named with the input filenames and an extension of .abs. Header files, however, do not generate a corresponding .abs file.

Assemble these files with the --absolute_listing assembler option as follows to create the absolute listing:

cl430 --absolute_listing filename .abs

The -e options affect both the interpretation of filenames on the command line and the names of the output files. They should always precede any filename on the command line.

The -e options are useful when the linked object file was created from C files compiled with the debugging option (--symdebug:dwarf compiler option). When the debugging option is set, the resulting linked object file contains the name of the source files used to build it. In this case, the absolute lister does not generate a corresponding .abs file for the C header files. Also, the .abs file corresponding to a C source file uses the assembly file generated from the C source file rather than the C source file itself.

For example, suppose the C source file hello.csr is compiled with the debugging option set; the debugging option generates the assembly file hello.s. The hello.csr file includes hello.hsr. Assuming the executable file created is called hello.out, the following command generates the proper .abs file:

abs430 -ea s -ec csr -eh hsr hello.out

An .abs file is not created for hello.hsr (the header file), and hello.abs includes the assembly file hello.s, not the C source file hello.csr.

9.3 Absolute Lister Example

This example uses three source files. The files module1.asm and module2.asm both include the file globals.def.

module1.asm

.global dflag .global array .global offset .bss dflag,1 .bss array,100 .text MOV &array,R11 MOV &offset,R12 ADD R12,R11 MOV @R11,&dflag

module2.asm

.global dflag .global array .global offset .bss offset,1 .text MOV &offset,R14

globals.def

.global dflag .global array .global offset

The following steps create absolute listings for the files module1.asm and module2.asm:

Step 1: First, assemble module1.asm and module2.asm: cl430 module1
cl430 module2

This creates two object files called module1.obj and module2.obj.

Step 2: Next, link module1.obj and module2.obj using the following linker command file, called bttest.cmd:
--output_file=bttest.out --map_file=bttest.map module1.obj module2.obj MEMORY { RAM: origin=0x0200, length=0x0800 FLASH: origin=0x1100, length=0xEEE0 } SECTIONS { .bss: >RAM .text: >FLASH }
Invoke the linker: cl430 --run_linker bttest.cmd

This command creates an executable object file called bttest.out; use this file as input for the absolute lister.

Step 3: Now, invoke the absolute lister: abs430 bttest.out

This command creates two files called module1.abs and module2.abs:



module1.abs:

.nolist .text .setsym 000001100h __text__ .setsym 000001100h etext .setsym 000001112h __etext__ .setsym 000001112h .bss .setsym 000000200h __bss__ .setsym 000000200h end .setsym 000000266h __end__ .setsym 000000266h array .setsym 000000201h dflag .setsym 000000200h offset .setsym 000000265h .setsect ".text",000001100h .setsect ".bss",000000200h .setsect ".debug_line",000000000h .list .text .copy "module1.asm"
  module2.abs:
.nolist .text .setsym 000001100h __text__ .setsym 000001100h etext .setsym 000001112h __etext__ .setsym 000001112h .bss .setsym 000000200h __bss__ .setsym 000000200h end .setsym 000000266h __end__ .setsym 000000266h array .setsym 000000201h dflag .setsym 000000200h offset .setsym 000000265h .setsect ".text",00000110eh .setsect ".bss",000000265h .setsect ".debug_line",00000003ah .setsect ".debug_info",00000014fh .list .text .copy "module2.asm"
  These files contain the following information that the assembler needs for Step 4:
  • They contain .setsym directives, which equate values to global symbols. Both files contain global equates for the symbol dflag. The symbol dflag was defined in the file globals.def, which was included in module1.asm and module2.asm.
  • They contain .setsect directives, which define the absolute addresses for sections.
  • They contain .copy directives, which defines the assembly language source file to include.

The .setsym and .setsect directives are useful only for creating absolute listings, not normal assembly.

Step 4: Finally, assemble the .abs files created by the absolute lister (remember that you must use the --absolute_listing option when you invoke the assembler): cl430 --absolute_listing module1.abs
cl430 --absolute_listing module2.abs


This command sequence creates two listing files called module1.lst and module2.lst; no object code is produced. These listing files are similar to normal listing files; however, the addresses shown are absolute addresses.

The absolute listing files created are module1.lst (see Example 9-1 ) and module2.lst (see Example 9-2).

Example 9-1 module1.lst

module1.abs PAGE 1 17 001100 .text 18 .copy "module1.asm" A 1 .global dflag A 2 .global array A 3 .global offset A 4 000200 .bss dflag,1 A 5 000201 .bss array,100 A 6 001100 .text A 7 001100 421B MOV &array,R11 001102 0201! A 8 001104 421C MOV &offset,R12 001106 0265! A 9 001108 5C0B ADD R12,R11 A 10 00110a 4BA2 MOV @R11,&dflag 00110c 0200! No Assembly Errors, No Assembly Warnings

Example 9-2 module2.lst

module2.abs PAGE 1 18 00110e .text 19 .copy "module2.asm" A 1 .global dflag A 2 .global array A 3 .global offset A 4 000265 .bss offset,1 A 5 00110e .text A 6 00110e 421E MOV &offset,R14 001110 0265! No Assembly Errors, No Assembly Warnings
Submit Documentation Feedback

Copyright© 2015, Texas Instruments Incorporated. An IMPORTANT NOTICE for this document addresses availability, warranty, changes, use in safety-critical applications, intellectual property matters and other important disclaimers.