ARM Technical Support Knowledge Articles

LOCATING A VARIABLE IN A REGISTER

Applies to: C51 C Compiler

Answer


Information in this article applies to:


QUESTION

How can I locate a local variable in a register using C? I wish to do this in order to save on memory space.

ANSWER

It is not possible to locate a variable in a register using C. The register bank(s) used by the compiled code are reserved and the registers are used as needed. If your variable is local, then there is a high probability that it will be overlaid with other local variables, thus reducing data memory usage.

It is possible to write a function in assembler or write some in-line assembler to achieve this. However, you will require extra data memory to preserve the PSW, so you will not be saving any memory space. In addition, the compiled code may corrupt the register, or by changing the register you may stop compiled code from working. This is fraught with many problems and we do not recommend that you try this.

The best solution is to let the linker overlay the variable. Heavily used variables are often copied into registers for manipulation.

Article last edited on: 2004-06-09 15:20:32

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential