29/11/2024
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐ฎ๐ข๐ฅ๐ ๐ฉ๐ซ๐จ๐๐๐ฌ๐ฌ? ๐๐จ๐ฐ ๐ข๐ฌ ๐ข๐ญ ๐๐จ๐ง๐ ? ๐ฐ๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐จ๐ฆ๐ฉ๐ข๐ฅ๐๐ซ ๐ฌ๐ญ๐๐ ๐๐ฌ ? ๐๐ก๐๐ญ ๐๐ซ๐ ๐ฆ๐๐ฆ๐จ๐ซ๐ฒ ๐ฌ๐๐๐ญ๐ข๐จ๐ง๐ฌ? ๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐ฌ๐ฒ๐ฆ๐๐จ๐ฅ ๐ญ๐๐๐ฅ๐? ๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐๐๐ฎ๐ ๐ข๐ง๐๐จ ?
--ุชุนุฑู ุงู ุงูููุงุฑุฏู ููุชููู
ูู ู
ูุงู ุทููู ูุนุฑูุถ ุญุฑููุง ูู ุงููุชุฑุฉ ุงูุฒู
ููุฉ ุจูู ุงูู ุชุฏูุณ ุนูู ุฒุฑุงุฑ ุงู build ูู ุงู ide ูุจูู ูู
ุง ุชุฑูุน ุงูุฏู ู
ู ุนูู ุงูุฒุฑุงุฑ ุฌุฒุก ู
ู ู
ููุฑู ุซุงููุฉ ูุนูุง ุจุณ ููู ูู
ูุฉ ุญูุงูุงุช ูุงุงุงุงุงุงู ุชุนุงูู ูุง ุญุณู ู deep dive ูููุง ููููู
ูู ุญุชู ููู ูุจุชุนู
ู ุงูู ูุงุฐุงู !
--ูููู ุจุณ ูุฏุง ูู ูุนูู ุงู build process ุ ูุจุชู
ุงุฐุงู ุ
ูุงูู ูุงุฒู
ุชูุง ูุจุชุชูุณู
ููุงู
Stage ุ ููู stage ูููุง ุงูู ูููู ูุจุชุนู
ู ุงูู ุ
ููุนูู ุงูู ุง generate ุงู binary code ุ
ูุงูู ูู ุงู Compiler ูุจูุญุตู ููู ุงูู ุ ูุจูุชูุณู
ููุงู
stage ุ
ูุงุฐุงู ุงููููุงุช ุงููุชูุฑ ุงููู ุงูุง ูุงุชุจูุง ูู ุงูุจุฑูุฌููุช ุฏู ุจุชุชุฌู
ุน ู
ุน ุจุนุถูุง ุนุดุงู ูุทูุน ููุง executable file ุงุฎุฏู ุงุญุฑูู ุนูู ุงูุจูุฑุฏู ุ
--ููุนูู ุงูู symbol table ูุจุณุชุฎุฏู
ู ูู ุงูู ุ
ูุงุฐุงู ูู ูุงูู ุจูุทูุจ function ู
ูุฌูุฏู ูู File ุชุงูู ุงุฐุงู ุงู linker ุจูููู ุงูุฑุฃุณูู ุฏูู ูู ุงูุญูุงู ุ
ูุนูู ุจูุนุฑู ู
ููู ุงู function ุงููู ุงูุช ุจุชุทูุจูุง ุฏู ู
ูุฌูุฏ ูู ูุงูู ูุฐุง ูุงู Definition ุจุชุงุนูุง ุงูู ุ
ู ููููุฏู ุจุงูู ููู
ุงู build ุจุฑูุณูุณ ุงูุช ุจุชูููู ูู ุงูุงูู ูุงูุงุฎุฑ ุงูุง ูู ุดุบุงู ุนูู ุงู ide ุจุถุบุท ุนูู ุงู build button ูุฎูุตุช ุ
--ููุนูู ุงูู Debug info ุ ูุจุงุณุชุฎุฏู
ูุง ูู ุงูู ุ ููุญุตู ุงูู ูู ุทูุนุช ุงู binary ู
ู ุบูุฑูุง ุ
--ุญุงุถุฑ ูุง ุญุณู ูุฌุงูุจู ุนูู ูู ุฏู ูุฒูุงุฏุฉ โฆ.ุฏุง ุงุญูุง ุนูููุง ูุงููู (ุฏุงูุง ุญุชู ูุง ุญุณู ูู
ุดู ุงูุฌูุด ูู
ุงู ุดูุฑ ุงูุง ูุงู
ููู
ููุง ูุชูุงูู ุญุฏ ุชูููู ู
ุด ูุงูู
ููุง ู
ุนูุด ูุถุญูู ู
ุนูุด ุจูู ูุง ุญุณู ูุฑูุญ ุงุฎุฏู
ุชุฑุงุจ ุงููุทู ููุจูู ุงุฑุฌุนูู ูู ุงูุงุฌุงุฒุงุช ูุงุจูู ุงุฏุนููู ุจูู ูุง ุญุณู ุงูุณูู ุชููู ูููู ุนููุง ูุชุนุฏู ุจุณุฑุนู)โค๏ธ
/*************************/
๐-๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐ฎ๐ข๐ฅ๐ ๐ฉ๐ซ๐จ๐๐๐ฌ๐ฌ?
--Getting target executable code from c files.
--ุงู build process ุงู ุงู compilation process ุฏู ุงูุนู
ููู ุงููู ุจูุนู
ููุง ุนุดุงู ุงู .c ุงููู ู
ุนุงูุง ุฏู ูุชุญูู ู .o ุงูbin ุนุดุงู ูุงุฎุฐู ูุนู
ูู burn ุนูู ุงู microcontroller.
--ุนุงูุฒูู ูููู
ุจูู ู
ู ุงูู ู
ูููู ุงู file.c ู
ุนุงูุง ูุญุฏ ู
ุทูุน file.o ุงุฎุฏู ุงุญุทู ุนูู ุงู microcontroller.
--ููู
ู ูู build process ุฏุง ุจููููู ูู ุงู ุชูุฏุฑ ุชููุด ุงู ุชุญุฏุฏ ุงู error ุงููู ุทุงูุน ููู ุฏู ุจุณุจุจ ุงูู ุฃู ููุน ูู ุงูู stage ููู
ุงู ููุนุฑูู ุงู statements ูุชุญููู ุงู c code ู machine language.
--ุจุงูุงุถุงูู ูู
ุงู ูุชุนุฑู ุชูุชุจ ููุฏ ูููุณ ูุงู ุงูุช ุจููุช ุนุงุฑู ุงูููุฏ ุฏู ุจูุฑููููุช ุงุฐุงู ูู ุงูู
ูู
ูุฑู ูุนูู ุงููุงุฑุฏููุฑ ุจุชุงุนู .
--ุงุฐูุฑู ุจุญุงุฌู ุงุญูุง ุจูุดุชุบู ุนูู 2 macin ุงู develop ุฃู ุงู host machine ูุฏู ุงููุงุจุชูุจ ุจุชุงุนูุง ูุฏู ุงููู ุจูุชู
ุนููู ุงู build process ูููู ุงู target machine ูุฏู ุงู microcontroller ุจุชุงุนูุง ุงููู ููุฑูุญ ู buran ุนููู ุงูููุฏ ุจุชุงุนูุง.
/******************/
-- ุงูุญุชู ุฏู ูุชูุฏููุง ูุณุคุงู ูููุณ ุงูุง ููู ุงูู ุงููุฑู ุจูู ุงู Natine Toolchain ูุงู cross Toolchain ุ
What is Native Toolchain and Cross Toolchain ?
--ุทุจ ูุนูู ุงูู ุงุตูุง ุงู Toolchain ุ
--ุฏู ูุง ุญุณู ุจูููู ูููุง ุงู compiler + linker + c libres + binary utilites โฆ ุงู toolchain ุฏู ุงููู ุจุชุนู
ู ุจููุง ูู ุงูู
ุฑุงุญู ุฏู ูุงู toolcine ุฏู ุจูู ููู ู
ููุง ููุนูู :
๐-๐๐๐ญ๐ข๐ฏ๐ ๐๐จ๐จ๐ฅ๐๐ก๐๐ข๐ง:
-- This toolchain runs on the same type of architecture, sometimes the same actual system, as the programs it generates. This is the usual case for desktops and servers, and it is becoming popular on certain classes of embedded devices.
--ุงู Native ูุนูู ุงูุช ุฌุจุช ุงู toolchain ู
ู ุนูู ุงููุช ุนุงุฏู ูุณุทุจุชูุง ุนูุฏู ุนูู ุงูุงุจุชูุจ ุงู ุงู host machine (ุงูุงุจุชูุจ ุจุชุงุนู ุงูุจุฑูุณูุณูุฑ ุจุชุงุนู ู intel / AMD ) ูุงุณุชุฎุฏู
ุชูุง ุนุดุงู ุชุนู
ู generation ูููุฏ ุจุงููุฑู ููู run ุนูู intel ุจุฑุถูโฆ.ูุถุญูู !
--ุญุงุถุฑ ูุง ุญุณู
--ูู
ุงูุงุฎุฑ ูู ุงู toolchain ูุฒูุช ุนูู Architecture ุนุดุงู ุช generate code ููุดุชุบู ุนูู ููุณ ุงู Architecture ุฏู ูุฏุง native toolchain.
--ู
ุซุงู ุนูู ูุฏุง ูู
ุง ุจุชูุชุญ eclipse ู
ุซูุง ูุชูุชุจ ููุฏ c ุนุงุฏู ูุดุบูุชู ูุทุจุน hello world ู
ุซูุง ุงูุช ูุฏุง ุนู
ูุชูู generation ุนูู ุงูุงุจุชูุจ ุจุชุงุนู ูุจุฑุถู ุงู binary ุงููู ุทูุน ููุดุชุบู ุนูู ุงูุงุจุชูุจ ุจุชุงุนู (ููุฑู ุนูู ููุณ ุงูู
ุนู
ุงุฑูุฉ ุงููู ุนู
ูุช ููู generation ุฏู ูุฏุง native toolchain)
๐-๐๐ซ๐จ๐ฌ๐ฌ ๐๐จ๐จ๐ฅ๐๐ก๐๐ข๐ง:
--This toolchain runs on a different type of architecture than the target, allowing the development to be done on a fast desktop PC and then loaded onto the embedded target.
--ููุง ุจูู ุนูุณ ุงู native ุงูุช ูุฒูุช ูุณุทุจุช ุงู toolchain ู
ู ุนูู ุงููุช ูุงุณุชุฎุฏู
ุชูุง ุนุดุงู ุชุนู
ู generation ู binary code ููุดุชุบู ุนูู target machine ุบูุฑ ุงูู
ุนู
ุงุฑูุฉ ุจุชุงุนุช ุงูุงุจุชูุจ ุจุชุงุนู.
--ูุฏูู ู
ุซุงู ูุง ุญุณู ุญุงุถุฑ
--ุฏูููุช ุงูุช ุฑูุญุช ูุชุจุช ููุฏ ุนูู atmel studio ุงู STMCubeIDE ูู
ุนุงู ุงู toolchain ุฏูููุช ุงูุช ุนู
ูุช ุงู gernation ,ูุงู develop ููููุฏ ุฏู ููู ุ
ุนูู ุงูุงุจุชูุจ ุนูุฏู ูุงููู ูู ุจูุฒุฏ ุนูู intel architecture ูุงู binary code ุงููู ุทูุน ุฏู ูุดุชุบู ููู ุ ุงู ุนูู ุงูู ุ ููุดุชุบู ุนูู ARM ุงู AVR ู
ุซูุง ูุนูู ู
ุด intel ุตุญ ุ
ูู ุฏู ุจูู ุงู cross toolchain ุจุนู
ู generation ูููุฏ ุนูู architecture ุงู ุจุฑูุณูุณูุฑ ู
ุนูู ูููู ูู ู
ุด ููุดุชุบู ุนูู ุงู same arctututrr ูุง ููุดุชุบู ุนูู archtucure ุชุงููู.
/******************/
--ูู
ุน ุงูู stage ูู ุงู build process ููููู ุงูููููู
๐-๐๐ซ๐-๐๐ซ๐จ๐๐๐ฌ๐ฌ๐ข๐ง๐ ๐๐ญ๐๐ ๐:
--All preprocessing directives will be resolved
--The pre-processing performs a series of textual transformations on its input, these happen before all other processing.
1-macro
2-include
3-Conditions ( , , )
4-Merge continued line โ\โ
5-Replace comments with single space
6-Inclusion of header files
7-Diagnostics ( , )
--ุงู -Pre-Processing ุจูุดูู ุงู ุญุงุฌู ูุณุจููุง ุนูุงู
ุฉ ุงู #
--ูุนูู ูู ููุช ุจุชุนู
ู ู
ุซูุง ู File ู
ุนูู ููุฑูุญ ูุดูู ุงู ุฏู ููุญุท ุงู content ยญยญยญุจุชุงุน ุงู file ุฏู.
--ููู ุงูุช ููุช ุนุงู
ู \ ุนุดุงู ุชูุถู ุจูู ุงูุณุทูุฑ ููู ุจูุดููุง
--ููุฐูู ุจูุดู ุงู # ุงููู ูู ู
ูุชูุจ ุฌูุจูุง string ูููุณ ุงู string ูููู ุจูู double quotation
--ุงู ููู # # ูุฏู ุงููู ุจุชุนู
ู concatiantion ุจูู ุง ู starings ุฏู ูุจุนุถูุง
--ูุฐูู ููู ุงูุญุฌุงุช ุจุชุงุนุช ุงู condition ( , , )
ุชูููู ุทุจ ูู ู
ุด ุนุดุงู ูุชุดู ุนูู ุงู condition ุฏู ู
ุญุชุงุฌ processor ูุนู
ููุง ุ ููููู ุทุจุนุง ูุง ุญุณู ู
ูู ุจูุนู
ููุง ุนูู ุงูุจุฑูุณูุณูุฑ ุจุชุงุน ุงู host machine ุงูุงุจุชูุจ ุจุชุงุนู ุงูุช
--ูุฐูู ู
ุซูุง ูู ุงูุง ุชูู
ููุฏุฑ ู ุนุงูุฒ ุงูุจู ุนูู ุจููุช ุงูุชูู
ุงู ููู
ุฉ variable ู
ุนูู ูุงุฒู
ุชุจูู ุจูุฐุง ููู
ู ู
ุนููู ูุนูู ูุงูุง ู
ู
ูู ุงูุฏุฑ ูู ุงูู
ุฑุญูู ุฏู ุงุนู
ู ุฌูููุฑูุช ู warning ุงู error ุงุฐุง ูู
ูุชุญูู ุงููู ุงูุง ู
ูุจู ุนููู
--ู
ู ุฃูู
ููุงูุฏ ุงูู
ุฑุญูู ุฏู ุงููุง ุจุชุนู
ู text replacement ููู ุงู macros ุงููู ุงูุง ู
ุนุฑููุง ููู ุจ ูุชูุฌู ูู ุงูู
ุฑุญูู ุฏู ุชุฏูุฑ ุชุดูู ูู ุฏู ูุชุจุฏูู ุจุงูููู
ุฉ ุงูู
ุนุฑููุฉ ูููุง ููู ููุทูุน ูุงูู ุงู .i ู
ูููุด ุงู ุญุงุฌู ุชุจุน ุงู # ูุง ุงููููุฏ ูููุงูู ููุง ู macro ูุชุณุงุนุฏู ุงูู ุชุนู
ู const value.
--ูุงู output ุจุชุงุน ุงู Pre-Processing stage ูู( file.i (intermediate
/************************/
๐-๐๐จ๐ฆ๐ฉ๐ข๐ฅ๐๐ซ ๐๐ญ๐๐ ๐
--Higher Level language code will be converted into processor architecture level assembly.
--Compiler works with one translation unit (parsed c file) at a time.
--Compiler allocates memory for definitions and generates opcodes for excitable statements.
--The compiler and assembler create relocatable object files (.obj)
--ูู ู
ุฑุญูุฉ ุงู compiler ููู ุชุญููู ุงู c code ู assembly code (ุฎุฏ ุจุงูู ูู ุงู compilers ุงูุญุฏูุซุฉ ููููู ู
ุฏู
ุฌ ุฌูุงูุง ุงู compiler +assembler ) ููู ุงุญูุง ููุง ุจูุชููู
ุงููู
ู
ูุตูููู ุนู ุจุนุถ ููุฏุง ุงู compiler ููุงุฎุฏ c code ููุทูุนูู assembly code ูุจูููู based ุนูู ุงู architecture ุงููู ุงูุช ู
ุญุฏุฏูุง.
--ู
ุฑุญูุฉ ุงู compiler ูู based ุนูู ุงู Architecture ูุงู ูู Architecture ููู ุงู Assembly ุงูุฎุงุต ุจูู.
--ูุทุจุนุง ุงู compiler ุจูุดุชุบู ุนูู source file ูุงุญุฏ ูู ุงูู
ุฑุฉ ุงููุงุญุฏุฉ.
--ูู ุงู compiler ู
ู
ูู ุงุจุณุชุฑูุดู ูุฏุง ูู ุจูุนู
ู ุงูู ุ
--ุจูุนู
ู ุญุงุฌุชูู ูุง ุญุณู ุงูุงููู ุงูู ูุญูู ุงู c code ุจุชุงุนู ู machine code ูุงูุญุงุฌู ุงูุชุงููู ุงูู ูุญุฌุฒ ุงู memory ุจุชุงุนุชู.
--ูู ุงูุบุงูุจ ุงูุจุฑูุฌููุช ุจุชุงุนู ุจูููู ููู ุงูุชุฑ ู
ู source code ูุนูู ุจูููู ุนูุฏู main.c , gpio.c , timer.c ,adc.c ุงูููู
ุจููุฑ ุจูู
ูุณ ูุงูู ูุงูู ูุฏุง ููุจุชุฏู ูุญูููู ู Assembly
--ุงู output ุจุชุงุน ุงู compiler ูู ูู ู
ูุตูู ุนู ุงู assembler ูููุทูุน ููู file.s.
--ุงู compiler ู
ู ุฌูุง ู
ุชูุณู
ู 3 stage ุชุนุงูู ูุง ุญุณู ุงุนุฑูู ุนูููู
.
/******************/
-Compilation stages:
๐-๐
๐ซ๐จ๐ง๐ญ ๐๐ง๐
1-๐ฌ๐จ๐ฎ๐ซ๐๐ ๐๐จ๐๐ ๐ฉ๐๐ซ๐ฌ๐ข๐ง๐
--ุงู Front end ูุฏู ุจูุญุตู ูููุง source code parsing ููู ุงู ุจูุชุจุชุฏู ููุตุต ุงูููุฏ ุงูู
ูุชูุจ ูุญุชู ุญุชู.
--ูุจูุนู
ู ููุง ุนู
ููุฉ ุงู Tokenising ููู ุงูู ูุญุงูู ูููู
ุงู tokens ูุงู ุงูููู
ุงุช ุฏู ู
ู keywords , operators , identifier , literials ููููู
ุจูู ุงุณุงู
ู ุงู variables ูุงู functions.
--ุจูุนู
ู ุงูููุงู
ุฏู ุงุฐุงู ุ
By
--๐๐ฒ๐ง๐ญ๐๐ฑ ๐๐ง๐๐ฅ๐ฒ๐ฌ๐ข๐ฌ
1-Ensure tokens are organized according to C rules.
2-To avoid compiler syntax errors
3-output = parse tree
--ูููุง ูู ุจูุญูู ุงู C code ุงููู ุงูุช ูุงุชุจู ููุดููู ูู ู
ุชูุงูู ู
ุน ุงู c stranded ููุง ูุง ูู ููู ุญุงุฌู ู
ุด ุฒู ู
ุงู C ูุงููู ุนูููุง ู syntax ููุถุฑุจ compiler error .
--Intermediate representation
1-Transform parse tree into machine code intendant representation
/******************/
๐-๐๐ข๐๐๐ฅ๐ ๐๐ง๐
By:
๐-๐๐๐ฆ๐๐ง๐ญ๐ข๐ ๐๐ฆ๐ฒ๐ฅ๐๐ฌ๐๐ฌ
1-Adding info to the AST
2-Checks logical structure of the program
3-Problems found here are warnings rather than errors.
4-Program symbol table constructed; debug information inserted
--ููุง ุงู compiler ุจูุญุงูู ูููู
ู
ู ุงูููุฏ ุงูุช ุนุงูุฒ ุชุนู
ู ุงูู ุงู ุงูุช ุชูุตุฏ ุงูู ู logic ููุจุชุฏู ูุนุฑู ุงุญุฌุงู
ุงู Data type ุงููู ุงูุช ูุงุชุจูุง ูููู ู
ุดููู ุงู ุญุงุฌู ูู ุงูู
ุฑุญูู ุฏู ุจุชููู warning ู
ุด error ุฒู ุงู ุญุงุฌู ุชููู ุจุชุนู
ู conflict ุงู ุงูู ูููู ุดุงูู ุงูู ุงุชูุบุจุท ูู ุงูุญุชู ุฏู ุงู ุงููุง ู
ู
ูู ุชุชููู
ุจุฃูุซุฑ ู
ู ู
ุนูู ูููููู ุฎุฏ ุจุงูู ูุงุฑูุณ ุงูุช ุนุงู
ู pointer ู
ู char ู ุจุชุฎููู ูุดุงูุฑ ุนูู ุญุงุฌู int ูุชูุฌู ุนุงู
ู casting ุงูุช ูู int ุนุดุงู ุชูููู ุงูุง ุนุงุฑู ู
ุชูููุด ููุชุดุงู ุงู warning ุฏู.
๐-๐๐ฉ๐ญ๐ข๐ฆ๐ข๐ณ๐๐ญ๐ข๐จ๐ง
1-Transforms the code into smaller or faster but functionality equivalent.
2-Multi level process includes:
--Inline expansion of functions
--Dead Code removal
--Loop unrolling
--Register allocation
--ุชุงูู ู
ุฑุญูู ูู ุงู middle end ูู ุงู optimization ูุฏู ุงููู ุจูุญุตู ูููุง ุชุญุณูู ููููุฏ ุจุชุงุนู ู
ู ุญูุซ ูููู ุฃุณุฑุน ู Ex*****on time ููููู efficient ู
ู ุญูุซ ุงุณุชุฎุฏุงู
ุงู memory.
--ุงู Optimization ุฒู ู
ููููุง ููู ุงู ุงูููู
ุจููุฑ ุจูุญุงูู ูุธุจุท ุงู code ุจุชุงุนู ููุฎููู ุงุณุฑุน ู ex*****on ู efficient ู
ู ุญูุซ ุงูู
ูู
ูุฑู ุงููู ุญุฌุฒูุง ูุฏู ุนู ุทุฑูู ุงูู ู
ุซูุง ู
ู
ูู ูููุจ function ุนุงุฏูู ู inline function ููู ุงูู ุจุฏู ู
ูุฑูุญ ูุนู
ู jump ุนูู ุงู address ุจุชุงุนูุง ูุง ูุฑูุญ ูุฌูุจ ุงูููุฏ ุจุชุงุนูุง ููุญุทู ูู ู
ูุงู ู
ูู ุดุบุงู.
--ูุฐูู ูู ุญุงุฌู ุฒู ุงู dead code ููู ุงูู ูุงุชุจ ููุฏ ุนู
ุฑู ู
ุจูุชููุฐ ูุงูููู
ุจููุฑ ุจูุนุฑู ุงู ุงูุญุชู ุฏู ุณูู ู
ูู ููุฌู ุนุงู
ู ูููุง optimization ู ูุญุฐููุง ุนุดุงู ูููู ุญุฌู
ุงู binary ุงููู ุทุงูุน.
--ูุฐูู ู
ู
ูู ูุนู
ู Loop unrolling ููู ุงูู ูููุจ ู
ุซูุง ุงู For loop ู ุณุทูุฑ ูุฑุง ุจุนุถูุง ุจุฏู ุงู loop ุญุฌู
ุงูููุฏ ุงู ุจููุจุฑ ูููู ุจูููู ุงุณุฑุน ูู ุงู Education.
.
/******************/
๐-๐๐๐๐ค ๐๐ง๐
๐-๐๐จ๐๐ ๐ ๐๐ง๐๐ซ๐๐ญ๐ข๐จ๐ง
1-Converts optimized Intermodal Representation code structure into target opcodes.
--ุชุงูุช ู
ุฑุญูุฉ ูุฏู ุงููู ุจูุญุตู ูููุง ุงู Code generation ูุงู memory allocation.
๐-๐๐๐ฆ๐จ๐ซ๐ฒ ๐๐ฅ๐ฅ๐จ๐๐๐ญ๐ข๐จ๐ง
1-Compiler allocates memory for the code and data in sections
2-Sections have different info.
3-Sections defined by name or attributes of info stored in them.
4-Attributes are used by linker for locating sections in memory.
--ุชูุฌู ุชุงูู ู
ุฑุญูู ูู ุงู back end ููู ุงู memory allocation ุงูู ูุญุฌุฒ ู
ุณุงุญุฉ ูู ุงูู
ูู
ูุฑู ูู code ุงููู ุทูุน ุฏู ูููุฏุงุชุง ุงููู ุงูููุฏ ุฏู ุจูุณุชุฎุฏู
ูุง ูุจูุญุฌุฒ ุงูู
ูู
ูุฑู ุฏู ูู ุตูุฑุฉ ุณูุงุดู ููู ุณูุดูู ุจูููู ููู ุบุฑุถ ุงู ุณุจุจ ู
ุนูู ูููุน ู
ู ุงูุฏุงุชุง ุจูุดูููุง ูุจูุฏู ูู Section ุงุณู
ูุจุนุถ ุงู attributes ุฒู ููุนู ุงูู ูููุน ุงูุฑุง ูุงูุชุจ ููู ููุง ุงูุฑุง ุจุณ ุญุฌู
ู ูุฏ ุงูู ุจููุฒู ูู ู
ูู
ูุฑู ููุนูุง ุงูู ููุฌู ุงู linker ุจูู ููู ุจููููู ุงููุงุณ ุฏู ูููุง ูู
ูู ูู ุงูุณูุงุดู ุงููู ุดุจู ุจุนุถ ูู ุณุดูู ูุงุญุฏ.
--ุทุจ ุงูู ุงู memory sections ุงููู ุนูุฏูุง ุ
/******************/
๐๐ก๐๐ญ ๐๐ซ๐ ๐ฆ๐๐ฆ๐จ๐ซ๐ฒ ๐ฌ๐๐๐ญ๐ข๐จ๐ง๐ฌ?
--ุจุต ููุง ุจูุทูุน ููู sections ุจุญุจ ุงุณู
ููุง ุงูุงุณุงุณู ูููู sections ุชุงููู ุจุชุทูุน ุจุฑุถู ูู ุงู ูุง ุชุญุชูู ุนูู ููุฏ ููุง ุนูู ุฏุงุชุง ุชุฎุต ุงูููุฏ ุจุณ ู
ู ุบูุฑูุง ุงู linker ูุงู debugger ุญุฑููุง ููุตุฑุฎูุง ู
ูู ูู ุงูุณูุงุดู ุฏู ู
ุทูุนุชุด
--ุงูู ูู sections ุงูุงุณุงุณูู ูุงููู ุชููู ุจุชุญุชูู ุนูู ููุฏ ุงู ุฏุงุชุง ุ
1-.bss
2-.data
3-.txet
4-.rodata
5-stack
6-heap
--ููุช ู
ุชููู
ุนููู
ูู ุงูุจูุณุช ุจุชุงุน ุงู start code ุชูุฏุฑ ุชุฑูุญ ุชุดูููู
ููุงู ุจุงูุชูุตูู
/*********************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐ฒ๐ฆ๐๐จ๐ฅ ๐ญ๐๐๐ฅ๐?
--ุฏู ุจุชููู ูุง global symbols ุงู private symbols
--ุงู symbol table ู
ู
ูู ุชุนุชุจุฑู ุญุงุฌู ุจุชุฎุฒู ูููุง ุดููุฉ ู
ุนููู
ุงุช ุจูุชุฎุฒู ูููุง ุงูู ุงูุงุณุงู
ู ุงููู ุฌุงุช ูู ุงู code ูุงูุงุณุงู
ู ุฏู ุงู Attributes ุจุชุงุนุชูุง ูุงูุช ุงูู ุฒู ุงูู ุงุณุงู
ููุง ูู ูู variable ููุง function ููุงูุช ู
ูุฌูุฏุฉ ูู ุงูู Scope ู ุงุชูุฑุฑุช ูุงู
ู
ุฑู ูู ุงู symbol ุฏู ูุงู global ููุง private ุจุญูุซ ูู
ุง ุงู linker ูุฌู ูููู ุงููููุงุช ุจุจุนุถูุง ูุจูู ู
ุนุงู guide ูุฏุง ุจููููู ุงู file ุฏู ุงูู ูุถุนู ููุฑู ูุฑุจุท ุงููุงุณ ุฏู ุจุจุนุถูุง.
/*********************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐๐๐ฎ๐ ๐ข๐ง๐๐จ?
--ุฏู ุงููู ุจูุณุชุฎุฏู
ูุง ุงู debugger ูู ุญุจ ูุนู
ู digging ููููุฏ ุจุชุงุนู ูุงู ุงู debugger ู
ูููู
ุด ุงู zero / ones + ุงู ุงูููุฏ ุจุชุงุนู ู
ู
ูู ูููู ุงุชุนู
ู ููู optimization ูููู ุญุฌุงุช ู
ูู ุงุชุดุงูุช ููู ุนุงูุฒ ุญุงุฌู ุชุณุงุนุฏู ูู ุงูู ูุจูู ุนุงุฑู ุงูุฌุฒุก ุฏู ุจุชุงุน ุงููุงููุดู ุฏู ุงู ุชู
ุงุจ ุงู source code ูู binary code ุฏู
/*********************/
--ุนูุฏู ุจูู ุณูุดููู ู
ูู
ูู ุฌุฏุง ุฌุฏุง ุฌุฏุง ููุตุจุญ ูุง ุญุณู ูุฑูุฒ ููุง ุฌุงู
ุฏ
๐-๐๐ฑ๐ฉ๐จ๐ซ๐ญ
--ูุฏู ุงููู ุจูุชุฎุฒู ููู ุงู global simple ุณูุงุก functions ุงู variables ูุนุฑู ู
ุนููู
ุฉ ุงู global ุฏู ู
ู ุงู symbol table
--ูู ุงูุณูุดู ุฏู ุจูุฎุฒู ุงู symbols ุงููู ุงูุช ู File ุจุชุนู
ู ูููุง Export ููููุงุช ุชุงููู ููุจูู ู
ุนุฑู ูุงู symbol ุฏู giver
๐-๐ข๐ฆ๐ฉ๐จ๐ซ๐ญ
--ูุฏู ุจูุฎุฒู ููู ุงูุญุงุฌุงุช ุงููู ุงูุช ู
ุญุชุงุฌูุง ู
ู ุจุฑู ุงู file ุฏู
--ูููุง ุจูุชุฎุฒู ุงูุญุงุฌุงุช ุงููู ุจุชููู required ู
ู ูููุงุช ุชุงููู ุจุชูุงุฏู ุนูู function ููู ู
ุชุนุฑูู ูู ูุงูู ุชุงูู ุจุชูุงุฏู ุนูู variable ููู ู
ุชุนุฑู ูู ูุงูู ุชุงูู ( ุทุจุนุง ุงููุงููุดู ุงูุช ู
ุนุฑู ุงู prototype ุจุชุงุนูุง ุนุดุงู ุชุนุฏู ู
ู ุงู compiler ูุงูููููุฑ ููุจูู ู link ุจูู ุจูููุง ูุจูู ุงู binary code ุงู ุงู Definition ุงูู
ูุงุจู ูููุง ูุนุดุงู ูุฏุง ูู
ุง ุจูุทูุน ููู ุงูุฑูุฑ undefined reference ุงูุงูุฑูุฑ ุฏู ุจูููู ุทุงูุน ููู ู
ู ุงูููููุฑ ุงูู ูู
ุง ูุฑุจุท ุจูู ุงุณู
ุงููุงููุดู ู
ูููุงุด ูู ุงู ูุงูู ุชุงูู ูุชุญุฏูุฏุง ู
ููุงุด ุงูุงุณู
ุงู ุงู symbol ุจุชุงุนูุง ูู ุงู Export section ู
ุนูู ูุฏุง ุงูู ู
ุด ู
ุนู
ูู ูููุง giver ูุจุงูุชุงูู ุงูููููุฑ ููุทูุน ููู ุงูุฑูุฑ ูููููู ุงุฑุญู
ูู ุงูุง ู
ุด ูุงูู ุงู symbol ุฏู ูู
ุด ุนุงุฑู ุงุฑุจุท ุจูู ุงู import ุงููู ุงูุช ุนุงูุฒู ุฏู ูุจูู ุงู export.
.
/*********************/
๐-๐๐ฌ๐ฌ๐๐ฆ๐๐ฅ๐๐ซ
--It takes the assembly source code and produces an assembly listing with offsets.
--The assembler output is stored in the object file.
--ููู ุงูู ุจูุงุฎุฏ ุงู file.s ููุญููู ู file.obj ูุฏู ุงููู ุจูููู binary ุงุตูุงุฑ ููุญุงูุฏ ูุฏู ุงููู ุจูุชุนู
ูู linking ู
ุน ุจููุช ุงููููุงุช ุงููู ูู ุงูุจุฑูุฌููุช ููุชุนู
ูู burn ุนูู ุงู microcontroller.
--ููุง ูู ุจูุทูุน ุงู binary ุงูู
ูุงูุฆ ููู ุงู instruction ูููุณู
ู ุจูู ู opcode ู operands
.
๐๐๐ฃ๐๐๐ญ ๐
๐ข๐ฅ๐๐ฌ
--Object file contains opcodes and data sections.
--Object file only contains the sections for static or predefined variables (the variables which defined before the compilation not in run time)
--The .o file is not (yet) excitable because static and global addresses are offsets from the start of their sections.
--ูููุง ุจูููู ุงู ุงููู ุจูุจูู ุทุงูุน ูู ุงู object code ููู ุงู Static variables ููู ุงููู ุจุชููู ุนุงูุดู ุทูู ุงูุจุฑูุงู
ุฌ (ุฒู ุงูุฏุงุชุง ุงููู ุงุชุฎุฒูุช ูู ุงู .bss / .data / .rodata ) ุฏูู ุซุงุจุชูู ูู
ูุฌูุฏูู ุทูู ุงูุจุฑูุงู
ุฌ ู
ุด ุดููู ููุชู
ูุช (ุฒู ุงู local variables ุงู ุงู heap ุฏูู ุจูุชุญุฌุฒูุง ูู ุงู run time ู
ุด ูู ุงู compilation time ) ูู
ุจูุจููุด ุนุงูุดูู ุทูู ุงูุจุฑูุงู
ุฌ (ู
ุชุฎูุทุด ุจูู ููู
ุฉ static ุงููู ููู ุฏู ูุงููู ู
ุนูุงูุง ุงู ุงูู
ุชุบูุฑ ู
ุญุฌูุฒ ู
ู ูุจู ุงู run timer ูุนุงูุด ุทูู ุงูุจุฑูุงู
ุฌ ูุจูู ุงู static keyword ุจุชุงุนุช ุงู c)
--Addresses defined in other modules are not known at all , except by name (symbol).
.
/**************************/
๐-๐๐ข๐ง๐ค๐๐ซ
-- ูุนูู ู
ุซูุง ุทูุน uart.o , lcd.o , gpio.o , adc.o
--ุทุจ ู
ูุง ุนุงูุฒ ุงุฌู
ุน ุงููุงููุงุช ุฏู ูููุง ู
ุน ุจุนุถ ุนุดุงู ุงุทูุน ุงูุจุงููุฑู ุงูููุงุฆู ุงููู ูุฑูุญ ุงุนู
ูู ุจูุฑู ุนูู ุงูุจูุฑุฏู.
--ู
ูู ุจูู ููุนู
ูู ุฏู ุ
--ููุนูู ุงูู ููุฌู
ุน ุงููุงููุงุช ุฏู ู
ุน ุจุนุถูุง ุ
--ูุฅุฐุง ุจูุฌู
ุนูุง ุงุตูุงุ
--ุงุฒุงู ุงุฑุณู
ุงู layout ุจุชุงุนูุ
--ูุงุฒุงู ุงุญุท ุงู reset section ุงู ุงู section ุนูุฏ ู
ูุงู ู
ุนูู
--The linker script is a text file made up of a series of linker directives which tells the linker where the available memory is and how it should be used.
--reflect exactly the memory resources and memory map of the target microcontroller
--you have to use the linker script at the linking phase by pass to
the linker -T
--ุงู linker script ูู script ุจูุงุฎุฏ ู
ุฌู
ูุนุฉ objects ู
ุน ุจุนุถ ุนุดุงู ูุนู
ููุง linking ูุนูู ุจูุงุฎุฏ ูู ุงูุณูุงุดู ุงููู ูู ูู ูุงูู ููุงุฎุฏ ู
ููุง ูู ุณูุดู ู
ุน ุงูุณูุดู ุงูู
ูุงุธุฑ ููู ูู ุงููุงูู ุงูุชุงูู ูุงูุชุงูุช ูููุฐุง ููุทูุนูู
ูู ุณุดูู ูุจูุฑ.
---ูุนูู ูู ุจุตูุช ุนูู ุงูุตูุฑู ุงููู ุชุญุช ูู ูุงูู ุจูููู ู
ุชูุณู
ู sections ุฒู ู
ูุชุง ุนุงุฑู .bss , .data , .text ูู ููุงุฎุฏ ุจูู ูู ุงู .bss ู
ู ูู ุงู files ููุทูุนูู
ูู ุณูุดู ูู ุงููุงูู ุงูููุงุฆู ุงุณู
ู .bss ูููุงุฎุฏ ูู ุงู .text ู
ู ุงู files ููุทูุนูู
ูู ุงู .text ุงูููุงุฆู ูููุฐุง ูู ุงูุณูุงุดู ุงููู ุดุจู ุจุนุถ ููู
ูุง ูู ุณูุดู ูุงุญุฏ.
--ุทุจ ูู ููุฒู
ุงู ูู
ุง ุฃุฌู
ุน ูู ุงู .text ู
ุซูุง ู
ู ูู ุงููุงููุงุช ูู ูุงุฒู
ุงุทูุนูู
ูู ุณูุดู ุงุณู
ู .text ุ
--ูุง ูุง ุญุณู ู
ุด ุดุฑุท ู
ู
ูู ุชุทูุนูู
ูู ุณูุดู ุงุณู
ู .ุญุณู ู
ุญุฏุด ูููููู ุญุงุฌู ูุงูุฏููุง ูุชุดุชุบู ุนุงุฏู
ูููู ููู ุชุนู
ู ุญุงุฌู ุฒู ูุฏุง ุงุตูุง !
--ูู ุงู .text ูุชุฌู
ุน ูู .text ูู ุงู .bss ูุชุฌู
ุน ุชุญุช ุณูุดู ุงุณู
ู .bss ูููู ูู ู
ู ุญูุซ ูููุน ู ุงู ูููุน.
--ุฎุฏ ุจุงูู ุงูุช ุงููุงููุงุช ุงููู ุงูุช ุจุชุฌู
ุนูุง ุณูุง ุฏู ูุจุชุนู
ููุง link ุจุชููู relocatable image ูุนูู ู
ุจุชูููุด ุนุงุฑูู ุงู location ุจุชุงุนูุง ููู ูู ุงู physical ุนุดุงู ูุฏุง ูู ุชูุชูุฑ ููุช ุจุชุทูุน ุงููุงูู ู
ู ุงู compiler ุงุณู
ู relocatable file ูุงู ูุณู ู
ูุนุฑูุด ุงูู
ูุงู ุงููู ูููุฒู ููู.
--ููุฐูู ุงู Linker script ูู ุจูุฒุฏ ุนูู ุงู target microcontroller ูุงู ูู ุงููู ุจูููู ุงูุญุงุฌุงุช ุฏู ูุชุชุญุท ููู ููุงุฒู
ูููู ุนุงุฑู ุงู addresses ูู ุงู microcontroller ุนุงู
ูู ุงุฐุงู.
--ุงู Linker script ุฒู ู
ูููุช ููู ูู ูุงูู ุนุงุฏู ุงูุงุฎุชุตุงุฑ ุจุชุงุนู ุจูููู .ld ุงูุช ุจุชูุชุจู ุจ syntax ู
ุนูู ูุจูููู ููู ู
ุฌู
ูุนุฉ commands ุจุชุณุชุฎุฏู
ูุง
/**************************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐ ๐ฅ๐จ๐๐๐ญ๐ข๐จ๐ง ๐๐จ๐ฎ๐ง๐ญ๐๐ซ ? ๐๐ก๐ฒ ๐๐ข๐ ๐ฐ๐ ๐ฎ๐ฌ๐ ๐ข๐ญ?
--linker symbol โ.โ dot
--this dot is called โlocation counter โ it is automatically
addressed calculated by each section size.
--we can use it to track and define the memory layout boundaries
--also we can use it to specify a specific address for a specific section
--location counter should be used only in section commands
--ูุนูู ุงูู Location counter ุ
--ุฏู ุฌูุฏู ู
ุฌููู ูู
ุญุฏุด ุญุงุณุณ ุจูู ููู ุจูุนู
ู ุดุบู ุฌุจุงุฑ
--ู
ุด ููููุง ูุจู ูุฏุง ุงู ุจุญุท ุงู reset section ุนูุฏ ุงู entry point ุนุดุงู ุงู cpu ูู
ุง ุจูููู
ุจูุฑูุญ ูู ุงูู
ูุงู ุฏู ูุงูุง ุนุงูุฒ ุงู reset section ูู ุงูู ุญุงุฌู ุชุดุชุบู ุ
-ููููุง ูุนูุง
--ุทุจ ุงุฐุงู ุงุญุท ุงู Section ุฏู ุจูู ุนูุฏ ุงู entry point ุงููู ูู ููุชุฑุถ ุงูุนููุงู ุจุชุงุนูุง 0x200000 !
--ููุง ุจูู ูุธูุฑ ุฏูุฑ ุงู Linker locator
-- ุงู linker locator ุฏู ุจูู ูุงูู ุจูุดุงูุฑ ุนูู ุงูู
ูุงู ุฏู ูุนูู ุงุฎููู ูู ุงูุงูู ู
ุซูุง ุจูุณุงูู ุนููุงู ู
ุนูู ููู ู
ุญุท section ูู ูุญุณุจ ุงู section ุฏู ุงุฎุฏ ูุฏ ุงูู ููุณุฌู ูู ููุณู ุชููุงุฆู ุงูุนููุงู ุงููู ุนููู ุงูุฏูุฑ ุฏูููุช ุจุนุฏ ููุงูุฉ ุงู Section ุฏู.
/****************************/
--ููุง ู
ุซูุง ูู ุงูุช ููุช ุจุชูุฏู ู prinf ุฏู ุจุชููู ู
ูุฌูุฏุฉ ูู ุงู static library ููุฏู ุจูููู object file ุจุงููุฑู ูุนูู ูุงูุช ุจุช include ุงู .h ุจุชุงุนู ูุชูุฌู ูู ู
ุฑุญูุฉ ุงู linker ุชูุฏู ุนูู ุงู code ุงููู ู
ูุฌูุฏ ูู ุงู static library ูุงููู ูู ููููู ู
ูุงูุฆ ูู prinf
--ุงู file.obg ููุญุฏู ุบูุฑ ูุงูู ุงูู ููุฒู ุนูู ุงูู
ููุฑูููุชุฑููุฑ ูุงูู ูุณู relocatable file (ูุนูู ู
ูุนุฑูุด ุงู addresses ุงูุญููููุฉ ุจุชุงุนุช ุงูู
ููุฑูููุชุฑููุฑ ุงููู ุงูุช ูุชูุฒู ุงูููุฏ ุนููู ููู ุงู relocatable ุงูุงุฏุฑูุณูุฒ ุงููู ููู ู
ุฌูุฏ offsets ุจุณ ููู ู
ุด ุงุฏุฑูุณูุฒ ุญููููู) + ุงู ููู ููู samples ู
ูุฌูุฏุฉ ูู ูููุงุช ุชุงููู ููุณู ุงู file.obj ุฏู ุนุงูุฒ ูุนู
ู link ู
ุนุงูุง ูู ู
ุนุงู ุงู symbol ุจุชุงุนูุง ุจุณ ููู ูุณู ุนุงูุฒ ูุฌูุจ ุงู defination ุงู ุงูุจููุฑู ุจุชุงุนู.
--ูุนูู ุงูุช ู
ุซูุง ูู ููุช ูู File.c ุฏู ุจุชูุฏู ุนูู ADC_read() ูุฏู ูุงููุดู ู
ูุฌูุฏุฉ ูู ูุงูู ุชุงูู ูู ุฏูููุช ุจูู ุจุงููุณุจู ู file.c ุฏู not resolved ูุณู ุนุงูุฒูู ูู ุงููููู ูุฑูุญ ูุฌูุจ ุงู DEfination ุงู ุงูุจุงููุฑู ุงูู
ูุงุจู ูููุง ู
ู ุงููุงูู ุงูุชุงูู ููุฑุจุทูู
ุจุจุนุถ ุฏู ุจูุญุตู ุงุฐุงู ุ ููููู ูุง ุญุณู ูู
ุงู ุดููู ู
ุชุณุชุนุฌูุด
--ุทุจุนุง ู
ู
ูู ุงูุจุฑูุฌููุช ุจุงูุนู ูู ูุงูู ููุงุญุฏู ููููู main.c ุชูููู ูุฏุง ุจูู ุงู linker ู
ููุด ูุงุฒู
ู ุงูููู ุงูุณู
ุจุงููู ุนูุจ ูุนู
ูุงููู ุนูุจ ุงููู ุงูุช ุจุชูููู ุฏู !
--ุงุฐุงู ูุง ุญุณู ุจุณ ู
ุงููุด ูุงุฒู
ุ
--ูู ุงู ูุงูู ูุงุญุฏ ุจุณ ูู
ุด ุจููุฏู ููู ุนูู ุงู ุญุงุฌู ู
ูุฌูุฏู ูู ูุงูู ุชุงูู ุชู
ุงู
ูููู ู
ุด ุงูุง ูุงููู ุงู ุงู file ูุจู ุงู link ููููู relatable file ูุนูู ุงูุงุฏุฑูุณูุฒ ุงููู ููู ูููุง ุงููุณุช ู virtual addresses ุงูููููุฑ ุจูู ูู ุงููู ููุงุฎุฏ ุงููุงูู ุฏู ูุญุทูููู ุนูุฏ ุงูุงู
ุงูู ุงูุตุญ ุจุชุงุนุชู ุทุจูุง ูู target ุงููู ุงูุช ุดุบุงู ุนููู
--ูุจูู ุฎุฏ ูู ุงูุจุฑูุฌููุช ุจุชุงุนู ูู ูุงูู ูุงุญุฏ ููู ุบูุฑ ู
ุคูู ุจุฑุถู ุงูู ุงุฎุฏู ุงูุฒูู ุนูู ุงูู
ููุฑู ุนูู ุทูู ูุง ูุงุฒู
ูุนุฏู ุนูู ุงูููููุฑ ูุธุจุท ููู ุงูุงุฏุฑูุณูุฒ ุงููู ูููุฒู ูููุง ุทุจูุง ูู target board.
By:
๐-๐๐ฒ๐ฆ๐๐จ๐ฅ๐ ๐ซ๐๐ฌ๐จ๐ฅ๐ฎ๐ญ๐ข๐จ๐ง:
1-Resolve references between objects.
2-Unresolved symbols are searched for in libraries to resolve.
3-No resolution = Unresolved reference error
4-If linker finds the same symbol defined in two object files it will report a โredefinitionโ error.
--ุงู symbol resolution !
--ู
ุด ุงุญูุง ุงุชูููุง ุงู ูู obj file ุจูุทูุน ููู ุงุชููู symbol table ูุงุญุฏ export ุฃู giver ูุฏู ุจูุฏูู ุงุณุงู
ู ุงู samples ุงููู ูู ุจูุนู
ูู ูููุง Support ูุงูุชุงูู ุงู import ุงู ุงู required ููู ุงููู ุจูุจูู ุจูุทูุจ ุงู symbols ุฏู
--ููุจุชุฏู ูุดูู ุงูู ุงููู ุงูู ูู ูุงูู ุทุงูุจู ูู ุงู import ููุฑูุญ ูุฏูุฑ ุนููู ูู ุงู export ุนุดุงู ูููู ุฑุงุณูู ูู ุงูุญูุงู ๐
ู
ูุงููุงุด ูู ุงููููุงุช ุงููู ุงูุช ุนุงู
ู ูููุง static library ูุฑูุญ ูุดูููุง ูู ุงู static library ู
ูููุงุด ูุฌู ู
ุฒุนู ูู ูุดู ููุงููู undefined symbol ุงู ุงูู ู
ุซูุง ููุงูู ุงูุชุฑ ู
ู definition ุงู export ูููุณ ุงู required ุฃู ุงู symbol ููุฌู ู
ุฒุนู ูู ูุดู ุจุฑุถู ููุฌู ูุงูู ููู multiple definition ู ุงูุธุจุช ุจูู ูุงุนู
ู
ุชุดุชุบูููุด ู
ุนุงู ุฑูุฒ ู ุฑูุฒ ู
ูููุนุด ูู ุงูุชุฑ ู
ู Export ุงูุงูู ููุณ ุงู name ูููุณ ุงู symbol.
๐-๐๐๐๐ญ๐ข๐จ๐ง ๐๐จ๐ง๐๐๐ญ๐๐ง๐๐ญ๐ข๐จ๐ง
1-Concatenating like-named sections from the input object files.
2-Program addresses are adjusted to take account of the concatenation.
--ูููุง ููุจุชุฏู ูุฌู
ุน ูู ุงููุงุณ ุงููู ุดุจู ุจุนุถูุง ู
ุน ุจุนุถ ูู ุณูุดู ูุงุญุฏ ุฒู ู
ููููุง ููู ูู ุงู .txt ูุทูุนูู ูู .txt ูุจูุฑ , ูู ุงู .data ูุทูุนู ูู .data ูุจูุฑ ูููุฐุง ู
ุน ุจููุช ุงู section ูุทุจุนุง ุจูุชุฌู
ุนูุง ูุจูุชุญุทูุง ุนู ุงู physical address ุจุชุงุนูู
ุงูุญูููู ุจูู ุงููู ูููุฒููุง ููู ูู ุงูููุงุด ุจุชุงุนุช ุงูู
ููุฑูููุชุฑููุฑ ููุฏุง ุฎูุงุต ุงููุงูู ุงุชุญูู ู
ู relatable file ู locatable file ูุงู ุงุชุญุท ูุงุชู
ุงุจ ููุงุฏุฑูุณูุฒ ุงูุญููููุฉ ุจุชุงุนุช ุงูุชุงุฑุฌุช ุจูุฑุฏ ุงููู ูููุฒู ุนูููุง.
๐-๐๐๐๐ญ๐ข๐จ๐ง ๐๐จ๐๐๐ญ๐ข๐จ๐ง
1-Each section is given an absolute address in memory. (Rom/Ram).
๐-๐๐๐ญ๐ ๐ข๐ง๐ข๐ญ๐ข๐๐ฅ๐ข๐ณ๐๐ญ๐ข๐จ๐ง
1-Any initialized data is stored in non volatile memory
2-On startup non-const data must be copied to RAM.
3-Each initialized section by copying is divided into two sections , one for ROM(shadow data section) and other for RAM.
--ููุง ูู ุงู variables ู
ุนู
ูู ูููุง installation ููุงุฒู
ุงู initialization ุฏู ุจูุชุงุฎุฏ ูุชุญุท ูู ุงูู
ูู
ูุฑู ููุชุงุฎุฏ ู
ููุง ููุจู ูู ุงู ram ุนุดุงู ููุชุนุฏู ุนูููุง At run time (ูู ูู ู
ุด const ุทุจุนุง) ุจุญูุซ ุงู ูู ูุตูุช ุงูุจุงูุฑ ุนู ุงูุจูุฑุฏู ูู
ุง ุชูุฌู ุชููู
ุชููู
ุจุงู Default values ูุฏู ุงููู ูุชููู ู
ุชุฎุฒูู ูู ุงู Rom.
--ุงูุฏุงุชุง ุงููู ูุชููู ู default ูู ุงู rom ุฏู ููุชุชููู ูู ุงู ram ู
ู ุงู startup code ูู ram ุจูููู ูููุง ุณูุดููู ูุงุญุฏ ุงุณู
ู ุงู Shadow ูุฏู ุงููู ูู ุงู rom ููุงุญุฏ Actual section ูุฏู ุงูุฌุฒุก ุงููู ุงุชููู ุงู ุงุชูุฑูุช ูู ุงู ram.
/*********************/
-ุงูู ุงูู ุงูู ู
ุจุฑูู ุฎูุตูุง ุงูุญู
ุฏ ููู ุชุนุฑู ูุง ุญุณู ุงูุช ูู ูุตูุช ูุญุฏ ููุง ุ ๐๐โค๏ธโค๏ธ
ูุงูุช ุญุงุฌุชูู ูุง ุญุณู ูุง ุจุชุญุจูู ููู ุนุดุงู ุชุฑุถู ุชูุฑุง ูู ุฏู ูุง ุจุชุญุจ ุงูุงู
ุจูุฏูุฏ ููู ุงูุญุงูุชูู ุฏูู ุงูุง ุจุญุจู ุฌุฏุง ูุง ุญุณู ูุงููู. โค๏ธโค๏ธโค๏ธ
---ุจูุฏุง ุงูุญู
ุฏููู ูููู ุฌุงูุจูุง ุนูู ุงูุณุคุงู ุจุชุงุนูุง ูู
ุนูุด ูู ุจุฏุฎู ูู ุชูุงุตูู ูููู ุจุจูู ุนุงูุฒ ุงุนุฑูู ุงูุตูุฑุฉ ูุงู
ูุฉ ุนุดุงู ุงูู
ูุถูุน ูุซุจุช ูุชููู
ู ุจุดูู ุนู
ูู.
---ูู
ุงู ูุชูุงูู ูู ุงูุจูุณุชุณ ุงููู ูุจู ูุฏุง ุนูู ุงููุดุชุงุฌ ุฏู ุณูุงุก ููุง ุงู ุนูู ุงูููุณ.
---ูุทุจุนุง ูู ูุตูุช ูููุง ู
ุชูุณุงุด ุชุฏุนููู + ุงูุง ูุจูู ุณุนูุฏ ุฌุฏุง ูู ุงูุช ูุตูุช ูููุง ๐๐โค๏ธโค๏ธ
/****************************/
23/11/2024