Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
59
Добавлен:
14.04.2015
Размер:
2.03 Mб
Скачать

Keil Software — A51/AX51/A251 Macro Assembler and Utilities

255

 

 

Chapter 9. Linker/Locator

The Lx51 linker/locator is used to link or join together object modules that were

9

created using the Ax51 assembler, the Cx51 compiler, and the Intel PL/M-51

compiler. Object modules that are created by these translators are relocatable

 

and cannot be directly executed. They must be converted into absolute object

 

modules. The Lx51 linker/locator does this and much more.

 

For optimum support of the different 8051 and 251 variants, the following

 

linker/locater variants are available. The LX51 and L251 linker/locater provide

 

an improved memory allocation handling and are supersets of the BL51

 

linker/locater. The following table gives you an overview of the linker/locater

 

variants along with the translators that are supported.

 

 

 

 

 

Linker/Locater

Processes Files from…

Description

 

BL51 Code

Keil A51 Macro Assembler

For classic 8051. Includes support for

 

Banking

Keil C51 Compiler

32 x 64KB code banks.

 

Linker/Locater

Intel ASM51 Assembler

 

 

 

Intel PL/M51 Compiler

 

 

LX51 Extended

Keil A51 Macro Assembler

For classic 8051 and extended 8051

 

Linker/Locater

Keil C51 Compiler

versions (Philips 80C51MX, Dallas 390,

 

 

Keil AX51 Macro Assembler

etc.)

 

 

Keil CX51 Compiler for

Allows code and data banking and

 

 

80C51MX

supports up to 16MB code and xdata

 

 

Intel ASM51 Assembler

memory.

 

 

Intel PL/M51 Compiler

 

 

L251

Keil A51 Macro Assembler

For Intel/Atmel WM 251.

 

Linker/Locater

Keil C51 Compiler

 

 

 

Keil A251 Macro Assembler

 

 

 

Keil C251 Compiler

 

 

 

Intel ASM51 Assembler

 

 

 

Intel PL/M51 Compiler

 

 

Programs you create using the Ax51 Assembler and the Cx51 Compiler must be linked using the Lx51 linker/locator. You cannot execute or simulate programs that are not linked, even if they consist of only one source module. The Lx51 linker/locator will link one or more object modules together and will resolve references within these modules. This allows you to create a large program that is spread over a number of source files.

 

256

Chapter 9. Linker/Locator

 

 

 

The Lx51 linker/locator provides the following functions:

9

 

Combines several program modules into one module, automatically

 

 

 

incorporating modules from the library files

 

 

Combines relocatable partial segments of the same segment name into a

 

 

single segment

 

 

Allocates and manipulates the necessary memory for the segments with

 

 

which all relocatable and absolute segments are processed

 

 

Analyzes the program structure and manipulates the data memory using

 

 

overlay techniques

 

 

Resolves external and public symbols

 

 

Defines absolute addresses and computes the addresses of relocatable

 

 

segments

 

 

Produces an absolute object file that contains the entire program

 

 

Produces a listing file that contains information about the Link/Locate

 

 

procedure, the program symbols, and the cross reference of public and

 

 

external symbol names

 

 

Detects errors found in the invocation line or during the Link/Locate run.

 

 

Supports programs that are larger than 64 Kbytes and applications that are

 

 

using a Real-Time Multitasking Operating System (RTX51, RTX251, etc.).

All of these operations are described in detail in the remaining sections of this chapter.

“Overview” on page 257 provides you with a summary of the features and capabilities of the BL51 linker/locator. This chapter introduces the concepts of what a linker is and does.

“Linking Programs” on page 266 describes how to invoke the linker from the command line. The command-line arguments are discussed, and examples are provided.

“Locating Programs to Physical Memory” on page 273 shows how to specify the physical memory available in the target hardware and how to locate segments to specific addresses.

“Data Overlaying” on page 280 explains how the Lx51 linker/locater creates a call tree for segment overlaying of local variables and discusses how to modify this call tree for applications that use indirect program calls.

Соседние файлы в папке HLP