After that comes code to set SP to RAMEND (thought the 0x00 won't be replaced with the actual value until linking)ĭ) finally the stuff in. The compiler then later uses R1 every time it needs a register holding 0x00. Then, like all CRT files, what this provides are:ī) a fully interrupt vector table all initially linked with a JMP/RJMP to _bad_interrupt (the linker will fill in the "0" targets later once it knows where _bad_interrupt will be placed)Ĭ) the init code that clears R1 to 0x00 (and stores that in SREG to clear the I bit). ![]() mega8):ĭ:\arduino-1.8.8\hardware\tools\avr\avr\lib\avr4>avr-objdump -S crtatmega8.o So this particular family has 25 members. If I just pick one of the 19 different "families" of AVR, in this case "avr4" which is the family that includes atmega48 and atmega88 you will find:ĭ:\arduino-1.8.8\hardware\tools\avr\avr\lib\avr4>dir crt*.oĭirectory of D:\arduino-1.8.8\hardware\tools\avr\avr\lib\avr4 For example in this fairly out of date Arduino installation:ĭ:\arduino-1.8.8>dir crt*.o /s /b | wc -l In an avr-gcc installation there are something like 300 crtXXX.o files, one for each model of AVR. ![]() That is the bit of C that the compiler/library always provides. So certainly the CRTs seem to think (do CRTs "think"? Discuss.) that the 809 is supposed to have short vectors.ĬRT = C RunTime. Oh I never thought to check the actual CRT when I built the tests.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |