Hello,
I have this C code
int value_a, value_b ; value_a = value_b ;
that translates to this assembly:
0x0002B128 E58D600C STR R6,[R13,#0x000C]
but the assignment fails - both variables are allocated on the stack. if I allocate the target variable in RAM (say, using "static") it works. alignment issue? something?
but the assignment fails - both variables are allocated on the stack.
What exactly "fails", and how? What result would you expect?
if I allocate the target variable in RAM (say, using "static") it works.
The stack is in RAM, too.
sorry for the incomplete explanation. the variable "value_b" is initialized. even if I do something like this (with another variable):
int value_c = 0
it might fail, hence filling the variable with what I regard as garbage. this only happens if R13 is involved.
actually, I have this code:
int value_c = 0, value_d = 0, value_e = 0, value_f = 0,
value_d and value_f are initialized to 0, the others not!
The compiler is not required to do everything that's stated in the source code. If variables are never used, the compiler is free to ignore them.
You may want to try to lower the optimization settings, or declare variables as volatile, if you want the compiler to follow your code more rigorously.
View all questions in Keil forum