.data initializes ram!

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

.data initializes ram!

1,073 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by cwpjr on Thu Aug 15 12:45:51 MST 2013
.data is supposed to be uninitialized, Right?
 
.bss // is supposed to be initialized to zero, right?
.word 1 // .word in .bss section requires but ignores the argument of 1. .word 2 is still 1 word.

.data also changes .word
.word 1 // requires argument and initializes this word to 1.
.space 4 // allocates word but initializes it to zero.

So where does the doc show how to define data that is not initialized?
0 Kudos
Reply
4 Replies

1,054 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by cwpjr on Thu Aug 15 13:58:29 MST 2013
OK I understand this now.

My question should have been how do I allocate uninitialized, none zeroed ram with labels that the assembler creates and the linker can use?

Do I need a new post?
0 Kudos
Reply

1,054 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by TheFallGuy on Thu Aug 15 13:55:17 MST 2013
That is correct.

.data is initialised
.bss is zeroed

Only the heap and stack are uninitialised.

If you have data initialised to zero, that is because how it has been initialised in your program.

For more infor, look on Wikipedia
http://en.wikipedia.org/wiki/Data_segment
0 Kudos
Reply

1,054 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by cwpjr on Thu Aug 15 13:20:59 MST 2013
My code is assembly in a .s file.
Called from main();
Both .data and .bss are initialized to zero at the entry to main breakpoint in the debugger.
.data stuff is first, then .bss stuff.
Only the Ram after the .bss is uninitialized.
0 Kudos
Reply

1,054 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by mc on Thu Aug 15 13:01:00 MST 2013
Hi cwpjr,
Actually the global and static variables initialized in your program will go to .data segment. All these variables will have an initial value as assigned by you in your program(code).
global and static variables that are not initialized in your program will go to .bss segment. Because sometimes uninitialized variables could be dangerous, these variables are initialized
to zero by the tool .

Hope it helps.

0 Kudos
Reply