[Mspgcc-users] variable reusing

2013-05-14 Thread kuldeep dhaka
hello guys,

while coding (embedded devices) i got an idea.

void uart_send_param(uint8_t before, uint8_t after, uint8_t default_value)
{
uint8_t i = 0;

uart_send(ASCII_ESCAPE);
uart_send(before);

while(before  vt100_param_getcount())
{
if(vt100_param_get(i) != default_value)
{
uart_send_int(vt100_param_get(i));
}

if(++i  vt100_param_getcount())
uart_send(VT100_PARAM_DELIMITER);
}

uart_send(after);
}

in the above code, after sending uart_send(before) , before is no more
useful to me.
but for while loop i have to get a new variable i for iteration.
in this case the compiler allocates the memory in stack.
since in embedded system, everything is scare , reusing things come handy
and efficient.

but if i try to reuse before in loop as replacement of i , it looks odd
+ bad coding practise, right?

but if their is something like __reuse__(before, i)  ( like
__attribute__() or sizeof() ) or uart_send_param(uint8_t before|i, uint8_t
after, uint8_t default_value)
after that  i could use before as i.

if i is just finished up with register indexing and no stack allocation,
then that good but still the problem of reuse might arise in some other
case.

in some case union can be used but i think it cannot solve the above
problem.
it can help alot to reduce push and pop operations, making thing efficient.

more or like saving 4 bytes flash and 2(or 1 byte, i dont know :) ) byte of
stack.( msp are 16bit MCU's, msp430G2552 only have 8K flash and 256Byte Ram
, so that comparable).
and when the flash get full or ram overflows it really hurts :)

note: rejected by mail demon of g...@gcc.gnu.org so im trying here.
-- 
*Kuldeep Singh Dhaka*
Sakul
+91-8791676237
kuldeepdha...@gmail.com
Programmer, Open Source, Web Developer, Entrepreneur, Animal Lover,
Student, Blogger, Reverse Engineer, Embedded System.

Bitcoins Accepted.
My GnuPG Public
Keyhttp://pgp.mit.edu:11371/pks/lookup?op=getfingerprint=onsearch=0x23816C5609DC7E26
Fork Me https://github.com/kuldeepdhaka
--
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] variable reusing

2013-05-14 Thread Hardy Griech
On 14.05.2013 20:01, kuldeep dhaka wrote:
:
 while coding (embedded devices) i got an idea.

 void uart_send_param(uint8_t before, uint8_t after, uint8_t default_value)
 {
  uint8_t i = 0;

  uart_send(ASCII_ESCAPE);
  uart_send(before);

  while(before  vt100_param_getcount())
  {
  if(vt100_param_get(i) != default_value)
  {
  uart_send_int(vt100_param_get(i));
  }

  if(++i  vt100_param_getcount())
  uart_send(VT100_PARAM_DELIMITER);
  }

  uart_send(after);
 }

 in the above code, after sending uart_send(before) , before is no more
 useful to me.

Perhaps I'm mistaken, bit what about the before usage one statement later?

Do I understand correctly, that you want recycle variable space?  If so: 
don't care, let the compiler handle such situations.

If you are in doubt, generate assember output of your differently 
optimized sources and compare them.

Hardy


--
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] variable reusing

2013-05-14 Thread Paul Sokolovsky
Hello,

On Tue, 14 May 2013 23:31:03 +0530
kuldeep dhaka kuldeepdha...@gmail.com wrote:

 hello guys,
 
 while coding (embedded devices) i got an idea.
 

[]

 in the above code, after sending uart_send(before) , before is no
 more useful to me.
 but for while loop i have to get a new variable i for iteration.
 in this case the compiler allocates the memory in stack.
 since in embedded system, everything is scare , reusing things come
 handy and efficient.
 
 but if i try to reuse before in loop as replacement of i , it
 looks odd
 + bad coding practise, right?
 
 but if their is something like __reuse__(before, i)  ( like
 __attribute__() or sizeof() ) or uart_send_param(uint8_t before|i,
 uint8_t after, uint8_t default_value)
 after that  i could use before as i.

You don't need to do anything for this to work as you describe for
*local variables* - compiler is supposed to do this for you (at
relevant optimization levels, like -O2). Google for live range
analysis for more info,
http://en.wikipedia.org/wiki/Register_allocation and
http://en.wikipedia.org/wiki/Live_variable_analysis are a good start.

More interesting question is such support for static (if not global)
variables. When trying to do Elliptic Curve Cryptography on MSP430
value line devices which top up at 0.5K RAM, you really wish that
compiler could pack together static buffers of functions which cannot
be active at the same time ;-). If anyone know of that to be done by
gcc, would be nice to get some pointers.


-- 
Best regards,
 Paul  mailto:pmis...@gmail.com

--
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] variable reusing

2013-05-14 Thread Daniel Beer
On Tue, May 14, 2013 at 09:26:46PM +0300, Paul Sokolovsky wrote:
 More interesting question is such support for static (if not global)
 variables. When trying to do Elliptic Curve Cryptography on MSP430
 value line devices which top up at 0.5K RAM, you really wish that
 compiler could pack together static buffers of functions which cannot
 be active at the same time ;-). If anyone know of that to be done by
 gcc, would be nice to get some pointers.

If you have static buffers which are never in use simultaneously, why
not keep them together in a union { }?

- Daniel

-- 
Daniel Beer dlb...@gmail.comwww.dlbeer.co.nz
IRC: inittab (Freenode)PGP key: 2048D/160A553B

--
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] variable reusing

2013-05-14 Thread Paul Sokolovsky
Hello,

On Wed, 15 May 2013 09:35:14 +1200
Daniel Beer dlb...@gmail.com wrote:

 On Tue, May 14, 2013 at 09:26:46PM +0300, Paul Sokolovsky wrote:
  More interesting question is such support for static (if not global)
  variables. When trying to do Elliptic Curve Cryptography on MSP430
  value line devices which top up at 0.5K RAM, you really wish that
  compiler could pack together static buffers of functions which
  cannot be active at the same time ;-). If anyone know of that to be
  done by gcc, would be nice to get some pointers.
 
 If you have static buffers which are never in use simultaneously, why
 not keep them together in a union { }?

Yes, the talk was about offloading the work of proving
non-simultaneous access constraints and creation of that union to the
compiler ;-). Shouldn't be hard for the case of scalar static variables
(function-local dataflow analysis and interprocedural control flow
analysis), so I wondered if someone knows it to be implemented. To be
really useful this should be applied to structural/array vars though,
and that's much harder.

 
 - Daniel


-- 
Best regards,
 Paul  mailto:pmis...@gmail.com

--
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] variable reusing

2013-05-14 Thread Wayne Uroda
Would either of these solutions work?:

- use a scheme like Malloc/free to allocate the buffers when you need them
- allocate the buffers on the stack (is there a practical limit to doing this?) 
and that way they can be recycled when not in use

The terrible downside with stack based allocation is the potential for silent 
and deadly stack overflow. At least a scheme like Malloc/free would give you an 
error, but you wouldn't be able to do anything useful with it at runtime!

It's an interesting idea and would be very useful for embedded development, 

How would the static analysis know when a certain buffer is no longer needed, 
would you need to insert some kind of static release statement/attribute 
somewhere?

- Wayne

On 15/05/2013, at 8:31, Paul Sokolovsky pmis...@gmail.com wrote:

 Hello,
 
 On Wed, 15 May 2013 09:35:14 +1200
 Daniel Beer dlb...@gmail.com wrote:
 
 On Tue, May 14, 2013 at 09:26:46PM +0300, Paul Sokolovsky wrote:
 More interesting question is such support for static (if not global)
 variables. When trying to do Elliptic Curve Cryptography on MSP430
 value line devices which top up at 0.5K RAM, you really wish that
 compiler could pack together static buffers of functions which
 cannot be active at the same time ;-). If anyone know of that to be
 done by gcc, would be nice to get some pointers.
 
 If you have static buffers which are never in use simultaneously, why
 not keep them together in a union { }?
 
 Yes, the talk was about offloading the work of proving
 non-simultaneous access constraints and creation of that union to the
 compiler ;-). Shouldn't be hard for the case of scalar static variables
 (function-local dataflow analysis and interprocedural control flow
 analysis), so I wondered if someone knows it to be implemented. To be
 really useful this should be applied to structural/array vars though,
 and that's much harder.
 
 
 - Daniel
 
 
 -- 
 Best regards,
 Paul  mailto:pmis...@gmail.com
 
 --
 AlienVault Unified Security Management (USM) platform delivers complete
 security visibility with the essential security capabilities. Easily and
 efficiently configure, manage, and operate all of your security controls
 from a single console and one unified framework. Download a free trial.
 http://p.sf.net/sfu/alienvault_d2d
 ___
 Mspgcc-users mailing list
 Mspgcc-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mspgcc-users

--
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users