SW500010 Microchip Technology, SW500010 Datasheet - Page 405

HI-TECH C PRO FOR PIC10/12/16

SW500010

Manufacturer Part Number
SW500010
Description
HI-TECH C PRO FOR PIC10/12/16
Manufacturer
Microchip Technology
Type
Compilerr
Series
PIC10/12/16r
Datasheets

Specifications of SW500010

Supported Families
PIC10, PIC12, PIC16
Core Architecture
PIC
Software Edition
Professional
Kit Contents
Software And Docs
Mcu Supported Families
PIC10/12/16
Tool Type
Compiler
Lead Free Status / RoHS Status
Not applicable / Not applicable
For Use With/related Products
PIC10, PIC12, PIC14, PIC16, PIC16E
Lead Free Status / Rohs Status
Lead free / RoHS Compliant
Other names
019P
778-1006
778-1006
Error and Warning Messages
sections or blocks) into the available memory on the target device. Fixup overflow is when the
value determined for a symbol is too large to fit within the allocated space within the assembler
instruction. For example, if an assembler instruction has an 8-bit field to hold an address and the
linker determines that the symbol that has been used to represent this address has the value 0x110,
then clearly this value cannot be inserted into the instruction.
Badly written C code can also generate assembler that ultimately generates fixup overflow errors.
Consider the following error message.
This indicates that the file causing the problem was main.obj. This would be typically be the
output of compiling main.c or main.as. This tells you the file in which you should be looking.
The next number (8 in this example) is the record number in the object file that was causing the
problem. If you use the DUMP utility to examine the object file, you can identify the record, however
you do not normally need to do this.
for the value (1) , and the value which is the actual value the symbol represents, is typically the
only information needed to track down the cause of this error. Note that a size which is not a multiple
of 8 bits will be rounded up to the nearest byte size, i.e. a 7 bit space in an instruction will be shown
as 1 byte.
error message.
and to confirm, look for the symbol referenced in the assembler instruction at this address in the
symbol table at the bottom of the same file.
In this example, the instruction causing the problem takes an 8-bit offset into a bank of memory, but
clearly the address 0x1FC exceeds this size. Maybe the instruction should have been written as:
The causes for this can be many, but hand-written assembler code is always the first suspect.
The location (loc) of the instruction (0x1FD), the size (in bytes) of the field in the instruction
Generate an assembler list file for the appropriate module. Look for the address specified in the
main.obj: 8: Fixup overflow in expression (loc 0x1FD (0x1FC+1),
7
8
9
Symbol Table
_foo 01FC
movwf
size 1, value 0x7FC)
07FC
07FD
07FE
(_foo&0ffh)
_main 07FF
0E21
6FFC
0012
movlw 33
movwf _foo
return
Fri Aug 12 13:17:37 2004
405

Related parts for SW500010