Thanks for the info Eric! I think I can manage with this to get more info out 
of google. :)

Best regards,
---------------------------------------
Sergio Campamá
sergiocamp...@gmail.com




On Sep 29, 2011, at 9:11 PM, Eric Decker wrote:

> 
> Harumph.   I'm not sure where to point you.   I learned about this stuff in 
> basic computer science classes and/or on the fly.
> 
> The major question is where to data variables live....
> 
> 1st there is registers (clearly local scope)
> 
> next up is the stack.   This depends on the architecture of the underlying 
> machine but some sort of stack is usually implemented and the compiler knows 
> how take advantage of these things.   The compiler uses the stack for saving 
> registers on entry to a routine and restore on exit.  It also uses the stack 
> for allocating space for local variables.   A stack typically is a LIFO (last 
> in first out) queuing structure.
> 
> But where does the stack live...  When a program first boots up (assuming an 
> embedded system), one of the things that happens is the stack pointer is set. 
>  A region of memory is set aside for the stack and the stack pointer is set 
> to the top of the stack area and grows downwards as things are pushed on to 
> the stack.  All of these of course depends on how the stack and the cpu is 
> implemented.
> 
> Another area of memory is static data.   There are globals that are 
> initilized (called the .data section) and globals that are uniitilized (.bss, 
> historical name from an old IBM assembler).   This is where the globals that 
> your program defines live.  On start up, the .data section is initliized and 
> .bss is zero'd.
> 
> Now the there is the rest of memory.   What ever is left over.   Typically, 
> the remainder of memory is made into the heap.  See Heap_Memory.   For 
> various reasons, using heap and dynamic memory on an embedded system is not a 
> great idea.
> 
> Hope that helps.
> 
> eric
> 
> 
> 
> On Thu, Sep 29, 2011 at 4:36 PM, Sergio Campamá <scamp...@ing.puc.cl> wrote:
> Thanks! But is there any more? I'm not a computer scientist, just an 
> electrical engineer who learnt how to program tutorial-style. I really don't 
> know what heap or stack memory is. And wikipedia isn't very helpful. Do you 
> know of any book that explains this matters?
> 
> Thanks!
> ---------------------------------------
> Sergio Campamá
> sergiocamp...@gmail.com
> 
> 
> 
> 
> On Sep 29, 2011, at 6:25 PM, David Brown wrote:
> 
> > On 29/09/11 21:00, Sergio Campamá wrote:
> >> On Thu, Sep 29, 2011 at 3:55 PM, David
> >> Brown<david.br...@hesbynett.no>wrote:
> >>
> >>> On 29/09/11 20:52, Sergio Campamá wrote:
> >>>> Hello,
> >>>>
> >>>> I was under the impression that in C you could not do something
> >>>> like:
> >>>>
> >>>> void func(int size) { int array[size]; //something return; }
> >>>>
> >>>> But a friend of mine just proved me wrong, using mspgcc...
> >>>> Searching around we found this to be VLA (variable length array)
> >>>> Does this kind of usage fall into dynamic memory? My impression
> >>>> is that the answer is yes, and therefore it shouldn't be used on
> >>>> microprocessors, because malloc can cause havoc (as someone told
> >>>> me some emails ago in this very same group).
> >>>>
> >>>> What are your thoughts on VLA? Does it use malloc internally, and
> >>>> therefore should be avoided?
> >>>>
> >>>
> >>> Variable length arrays are like any other data - they can go in
> >>> various places.  In a case like this, you have defined a non-static
> >>> local variable - just like any other non-static local variable, it
> >>> goes on the stack.  So as long as you are careful not to overflow
> >>> your stack, this should be fine - it doesn't suffer from the risks
> >>> you get with malloc (or, more accurately, the risks you get with
> >>> free), namely unpredictably long delays, fragmented heaps, and no
> >>> space errors.
> >>>
> >> Thanks David. I have been meaning to understand fully well how
> >> memory works in terms of stack and ram. Is there any text or
> >> resource available that could help me understand that?
> >>
> >
> > It's basic C.  Anything defined with a static lifetime (global data,
> > static local data) is statically allocated at fixed memory addresses.
> > Anything local to a function is either kept in registers (or removed
> > altogether by the optimiser) or put on the stack.  Anything allocated by
> > malloc (or standard "new" in C++) goes on the heap.
> >
> >
> > ------------------------------------------------------------------------------
> > All the data continuously generated in your IT infrastructure contains a
> > definitive record of customers, application performance, security
> > threats, fraudulent activity and more. Splunk takes this data and makes
> > sense of it. Business sense. IT sense. Common sense.
> > http://p.sf.net/sfu/splunk-d2dcopy1
> > _______________________________________________
> > Mspgcc-users mailing list
> > Mspgcc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
> 
> 
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure contains a
> definitive record of customers, application performance, security
> threats, fraudulent activity and more. Splunk takes this data and makes
> sense of it. Business sense. IT sense. Common sense.
> http://p.sf.net/sfu/splunk-d2dcopy1
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
> 
> 
> 
> -- 
> Eric B. Decker
> Senior (over 50 :-) Researcher
> 
> 

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2dcopy2
_______________________________________________
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users

Reply via email to