New SHARC compiler!

Started by Kenneth Porter September 14, 2000
Good news!

=================GIN FORWARDED MESSAGE==================
> From: "Smith, Brian" <>
> To: Kenneth Porter <>
> Subject: RE: [adsp] RE: Associating a register with a global variable
> Date: Wed, 13 Sep 2000 08:49:22 -0400

The newer compilers will allow you to mix optimization and debug. We
releasing vDSP ++1.0 later this month. It will have C++ in spades.
versions are planned for release early 2001. We can share more info
you under Non-Disclosure if you wish. I can arrange a visit with an ADI
representative if you don't already have one that call on you.


-----Original Message-----
From: Kenneth Porter [mailto:]
Sent: Tuesday, September 12, 2000 7:23 PM
To: DSPTools.Support
Cc: SHARC list
Subject: [adsp] RE: Associating a register with a global variable

Inspection of the VDSP-generated asm indicates that it only suppresses
redundant register loading if optimization is enabled. With
optimization enabled, only limited debugging info (line numbers only)
can be left in the executable, and I prefer the binary for my release
build to be identical to my debugging build. It would be desirable to
extend the compiler to retain more debugging info when optimization is

On Tue, 12 Sep 2000 12:50:13 -0400, DSPTools.Support wrote:

> Ken,
> Here is some information from our Compiler Group regarding your email
> about global variables.
> The "-reserve" command line switch lets you reserve registers
> for your inline assembly code or assembly language routines, including
> i0, i1, i8 and i9 (2 from each DAG). Some
> restrictions as to the use of this option are detailed under
> "User Registers" in the Sharc 21xxx C Compiler and Library
> Manual.
> Note, that reserving registers can negatively influence the efficiency
> of compiled C code, it will prevent loop
> optimizations, among others. Also, you must make sure all
> references are made through GNU asm statements.
> In general it is better to allow the compiler to choose where to place
> things. A reload should only be required if the contents
> at the address has changed, or in the case of a global variable
> a call is made to a routine which can or might change the
> variable.
> If a routine heavily uses this variable, it is often advantageous
> to make a local copy on entry to the procedure. The compiler can then
> see if the local copy is never changed and can make register
> assignments accordingly.
> Dana
> Best regards,
> Technical Support
> DSP Development Tools Product Line
> Analog Devices, Inc.
> http://www.analog.com/dsp/tools/form_techsupport.html
> ============================================
> ADI DSPs feature White Mountain Line of DSP Development Tools
> -----Original Message-----
> From: Kenneth Porter [mailto:]
> Sent: Thursday, September 07, 2000 8:10 PM
> To: dsptools.support
> Subject: Associating a register with a global variable > Is there some way in Visual DSP (SHARC) to tell the compiler that a
> global variable always lives in a specific register?
> I have a small number of global pointers that point to something like a
> task state object. All data associated with a task is referenced
> through one of these pointers. If I could lock these pointers in an I
> register, the compiler would not need to keep reloading registers every
> time a reference was made to task data.
> Do RTOS' for SHARC do anything special to accomplish this?
> Kenneth Porter
> Kensington Laboratories, Inc.
> mailto:
> http://www.kensingtonlabs.com
===================END FORWARDED MESSAGE===================

Kenneth Porter
Kensington Laboratories, Inc.