I declare 32 bit variables in the MyAsmVar section.
I know the base address of MyAsmVar. Also I know the address of var1 and var2.
AREA MyAsmVar, DATA,NOINIT, READWRITE, ALIGN=3
var1 DCD 0x00 var2 DCD 0x00
LDR R0,=0x20000000 ; base address of MyAsmVar LDR R1,[R0,#0] ; read var1 in to R1 (var1 address is 0) LDR R2,[R0,#4] ; read var2 in to R2 (var2 address is 4)
We must know the numeric value of variable address and this is not good.
How can I use the variables names instead of address?
I want the following lines but compiler give error messages;
LDR R0,=0x20000000 LDR R1,[R0,#var1] ; read var1 in to R1 LDR R2,[R0,#var2] ; read var1 in to R2
Also i try following lines but compiler dont compile.
LDR R1,[R0,#&var1] ; read var1 in to R1 LDR R2,[R0,#&var2] ; read var1 in to R2
if I use
var1 equ 0 var2 equ 4
problem solving, but i dont want to count address of variables.
"Did you compile it? (Compiler give error)"
No I did not! And I would assemble something like this, I would not compile it.
Did you read what I said when I posted that code?
WARNING: This code block is intended to illustrate a possible method. It is not complete and may have syntax errors.
I also was careful to say that I had indicated what you had to do.
Your responses show me that you are not taking the information given and following it through, so I think it would be wrong for me to just tell you.
It is not a complex problem.
It looks like Andy is right when he says:
"So you're not going to outsmart a Cortex-M3 compiler, then!"