I recently attended 3 interviews, all three had similar questions...
Where is const stored?
what are diff segments?
what is heap? where is it on RAM/ROM?
what is stored in stack?
what is relation b/w Segments and RAM/ROM/FLASH
Can someone suggest me some tutorial for this?
I have 2 years exp as software developer<embedded application layer>...Have worked on MSP430F1611, ADSP BF531...But due to short project deadlines, I never went into details of all memory segments(which now I regret). I did just normal C coding-compiling application development.. Please can someone guide me with Basics and Guide me to continue furthur in this regard?
+
After Reading few dicussions in this forum, I just opened a .map file using turbo C, (windows xp 32 bit OS/ processor - AMD 64bit, 2800+) can someone explain the below pasted MAP file in brief...also suggest some reference for further reading...
Expand|Select|Wrap|Line Numbers
- Start Stop Length Name Class
- 00000H 01A66H 01A67H _TEXT CODE
- 01A70H 01EB9H 0044AH _DATA DATA
- 01EBAH 01EBDH 00004H _EMUSEG DATA
- 01EBEH 01EBFH 00002H _CRTSEG DATA
- 01EC0H 01EC1H 00002H _CVTSEG DATA
- 01EC2H 01EC7H 00006H _SCNSEG DATA
- 01EC8H 01F0FH 00048H _BSS BSS
- 01F10H 01F10H 00000H _BSSEND STACK
- 01F10H 01F8FH 00080H _STACK STACK
- Detailed map of segments
- 0000:0000 01FA C=CODE S=_TEXT G=(none) M=C0S ACBP=28
- 0000:01FA 0086 C=CODE S=_TEXT G=(none) M=TEST1.C ACBP=28
- 0000:0280 003B C=CODE S=_TEXT G=(none) M=IOERROR ACBP=28
- 0000:02BB 0030 C=CODE S=_TEXT G=(none) M=EXIT ACBP=28
- 0000:02EB 0000 C=CODE S=_TEXT G=(none) M=HEAPLEN ACBP=28
- 0000:02EB 00F1 C=CODE S=_TEXT G=(none) M=SETARGV ACBP=28
- ..
- ..
- ..
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=GETCH ACBP=48
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=CALLOC ACBP=48
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=GPTEXT ACBP=48
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=MOVETEXT ACBP=48
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=PUTCH ACBP=48
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=SCROLL ACBP=48
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=SCREEN ACBP=48
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=VRAM ACBP=48
- 01EC:0050 0000 C=BSS S=_BSS G=DGROUP M=WHEREXY ACBP=48
- 01F1:0000 0000 C=STACK S=_BSSEND G=DGROUP M=C0S ACBP=28
- 01F1:0000 0080 C=STACK S=_STACK G=(none) M=C0S ACBP=74
- Address Publics by Name
- 0000:01F8 DGROUP@
- 01A7:0188 emws_adjust
- 01A7:018C emws_BPsafe
- 01A7:0184 emws_control
- 01A7:018A emws_fixSeg
- 01A7:016E emws_initialSP
- 01A7:00AE emws_limitSP
- 01A7:017E emws_nmiVector
- 01A7:017A emws_saveVector
- 01A7:018E emws_stamp
- 01A7:0182 emws_status
- 01A7:0186 emws_TOS
- 01A7:0192 emws_version
- 0000:0885 LXMUL@
- 0000:01E2 _abort
- 0000:0269 _add
- 0000:0426 _atexit
- 0000:05F6 _brk
- .....
- .....
- 01A7:0458 __atexittbl
- 01A7:0498 ___last
- 01A7:049A ___rover
- 01A7:049C ___first
- Program entry point at 0000:0000
I have seen lot of Forums but never have seen better quality discussion in other forums.. Keep it up frds.