| Electronic Components Datasheet Search |
|
UM0144 Datasheet(PDF) 39 Page - STMicroelectronics |
|
|
|||||||||||||||||||||||||||||
UM0144 Datasheet(HTML) 39 Page - STMicroelectronics |
|
39 / 92 page ![]() ST7 Assembler Linker 4 Linker UM0144 39/92 each routine. Put another way, each link must have entry fixed points to all its routine, otherwise re-linking one 'lump' of a program could make references to its addresses in other modules out of date. 4.5 The linker in more detail 4.5.1 The composition of the .OBJ files The .OBJ files produced by the assembler contain an enormous amount of overhead, mostly as coded expressions describing exactly what needs to go into the 'blank spaces' the assembler has been so liberal with. The linker contains a full arithmetic parser for 'working out' complex expressions that include external labels: This means (unlike most other assemblers) there are few restrictions on where external labels may appear. The assembler also includes line-number information with the .OBJ file, connecting each piece of generated object code with a line number from a given source file. OBJ files also contain 'special' markers for handling SKIP and DATE type directive. 4.5.2 The composition of the .COD files .COD files, on the other hand, contain very little overhead; there are six bytes per segment that describe the start address and length of that segment. Besides that, the rest of the code is in its final form. A segment of zero length marks the end of the file. It only remains for OBSEND to take the code segment by segment and send it on to its destination. 4.5.3 Reading a mapfile listing The linker also generates files with the suffix .SYM and .MAP in addition to the .COD file we have already discussed. The .SYM file contains a compact symbol table list suitable with the debuggers and simulators. The .MAP file listing shows three important things: a table of segments with their absolute address, a table of all classes in the program, and a list of all external labels with their true values, modules they were defined in and size. Here is an example MAPFILE, where one of the class, ROM, has gone past its limit, overwriting (or more correctly, having part of itself overwritten by) VECTORS. The [void] on some segments in the segment list says that these segments were not used to create object code, but were used for non-coding-creating tasks such as allocating label values with ds.b etc. The number in straight brackets on the segment as true address list shows how many segments 'into' the module this segment is, i.e., the 1st, 2nd etc. of the given module. The first x-y shows the range of addresses. The def (line) field on the external labels list shows the source code file and line number that his label was defined in. The number at the start of each class list line is the cod-file that the class contents were sent to (default is 0). |
|
Link URL |
| Does ALLDATASHEET help your business so far? [ DONATE ] |
About Alldatasheet | Advertisement | Contact us | Privacy Policy | Link to Datasheet | Link Exchange | Manufacturer List All Rights Reserved©Alldatasheet.com |
| Russian : Alldatasheetru.com | Korean : Alldatasheet.co.kr | Spanish : Alldatasheet.es | French : Alldatasheet.fr | Italian : Alldatasheetit.com Portuguese : Alldatasheetpt.com | Polish : Alldatasheet.pl | Vietnamese : Alldatasheet.vn Indian : Alldatasheet.in | Mexican : Alldatasheet.com.mx | British : Alldatasheet.co.uk | New Zealand : Alldatasheet.co.nz |
|
Family Site : ic2ic.com |
icmetro.com |