hi,
I want to ask a question.
How to define a macro function that can be called by C language in armasm?
I know that in GNU can be used in the following way:
.macro push_x1_x12
push x1,x2
push x3,x4
push x5,x6
push x7,x8
push x9,x10
push x11,x12
.endm
ENTRY(test)
.......
push_x1_x12 ......ENDPROC(test)
Now in armasm, I used as follow :
MACRO
push_x1_x12
MEND
But how to expand the macro that can be called by C language??
Oups, can you try the following?
#DEFINE push_x1_x12 __asm("push x1,x2", "push x1,x2", "push x3,x4", "push x5,x6", "push x7,x8", "push x9,x10", "push x11,x12")
6.4 Inline assembly language syntax with the __asm keyword in C and C++
The link just above also shows how to add parameters: you need to put them outside of the " " starting with #.
There are several ways of declaring assembly instructions. One at a time, or a list. And for the list, the way I explained previously with curly brackets "{}" or like strings in round brackets "()".
I am not sure why the curly brackets didn't work. It may depend on the compiler.