We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm trying to get some arm assembly code to work with macros. I'm using free download version of keil tools. is the macro language the same syntax for armasm arm tools and free download keil tools?
I wanted to use conditional compile macros like:
[ "$var1" = "" LDR r0, =0x1234 | LDR $var1, =0x1234 ]
which is a syntax that works with the ARM compiler, but the keil download is giving me an error.
And the error message I get only points to the line that invokes the macro. Is there a way to get the keil free download to output what the code looks like AFTER all the macro substitution is done?
I was trying to do something like this:
infocenter.arm.com/.../index.jsp
7.4.4. IF, ELSE, ENDIF, and ELIF
...
IF :DEF:NEWVERSION ; first set of instructions/directives ELSE ; alternative set of instructions/directives ENDIF
I think I'm used to an even older version of the assembler that used square brackets [ instead of "IF", square bracket ] instead of "ENDIF" and a pipe | instead of "ELSE".
Since everything I'm used to apparently has been "superseded", do you have a URL to how to write conditional compiled assembly with the latest revs of tools?
I wanted to make a macro that will take in a parameter and based of the parameter may compile one of many instructions. It worked on an older rev, but not on the latest.
Method 1: Using a Macro
; Macro definition MACRO Test $var1 [ "$var1" = "" LDR r0, =0x1234 | LDR $var1, =0x1234 ] MEND ; Macro invocation Test Test r1
Method 2: Using a global symbol
GBLS var1 var1 SETS "r1" [ "$var1" = "" LDR r0, =0x1234 | LDR $var1, =0x1234 ]
Description of IF,ELSE,ENDIF and ELIF: infocenter.arm.com/.../index.jsp
Description of MACRO and MEND: infocenter.arm.com/.../index.jsp
> I think I'm used to an even older version of the > assembler
No, my bad. I wasn't aware of the synonyms.
-- Marcus
> Method 1: Using a Macro
Hm, that's what I was trying to do. I must have a typo somewhere in my macro that I'm not seeing.
Is there a way to see the code that gets generated after all the macro replacement is finished? I'm using the free download tools.
It's reporting an error on the line where the macro is called, but not telling me what line in the macro itself is the problem.
So, it looks like the problem wasn't my macro at all. It was that my macro was in a file that I had created on Linux and pulled over to Windows.
I created a new project and a new file that did nothing but get my macro file and call the macro once. When I pulled the macro file into the project, the tool said something about the file having bad newline characters and that it would try to fix it. (I can't remember the exact message).
When I tried to assemble, I got the same error message which was something about bad characters at end of line.
I thought "bad characters" meant that my macro had a typo in it somewhere, like MACRO without MEND, or something like that. But this was the first time it had complained about the newline cahracters when I imported teh file, so I wondered if it was a Linux/Windows issue.
So then I wiped out the project and created a new startup.s file, and I retyped the macro from scratch (no cut and paste, nothing to get some old newline characters) and then called the macro in a simple bit of code.
It compiled just fine.
So, somehow the newlines from Linux totally confused the tool, and the error message I got at first wasn't clear that it was a problem with "\n" rather than a problem with a typo in my macro text like a missing MEND or END or ] or whatever.
Argh.
Anyway, thanks for the help, sorry for the false alarm.