gnu 伪指令定义函数

汇编中定义一个函数 ,type,func都可以,一般可以借助于global 设置全局属性,供外部c代码进行调用


第一种,使用伪指令 

.func   xx

MRS X0, SCTLR

RET

endfunc

atf例子

其中func ,endfunc 是一个宏


第二种,使用type

type 用于设置符号的类型, set the type of a symbol.

官方介绍: 

格式 :

.type fun_name, @function  //@function可以是%function

fun_name:

    #content

ret
.type指令指定fun_name为其它汇编程序调用此函数时的地址。
fun_name也为函数名。
@function表示函数内容开始。
ret指令表示函数结束,返回到父函数调用子函数处。

global 使用方法,

.global symbol, .globl symbol
.global makes the symbol visible to ld. If you define symbol in your partial program,
its value is made available to other partial programs that are linked with it. Otherwise,
symbol takes its attributes from a symbol of the same name from another file linked into
the same program.
Both spellings (‘.globl’ and ‘.global’) are accepted, for compatibility with other assemblers.

.global <symbol> This directive gives the symbol external linkage (similar to EXPORT in armasm).

例子

.global func1

.type func1   %function

func1:

MRS X0,ICC_XX

ret


第三种,使用macro 宏定义定义函数及参数

.macro   <name>   {<arg_1} //name必须,后面参数可选
{,<arg_2>} ... {,<arg_N>} 看这个例子就行了


.macro SHIFTLEFT a, b
.if \b < 0
MOV \a, \a, ASR #-\b
.exitm
.endif
MOV \a, \a, LSL #\b
.endm

宏可以嵌套,宏里面可以调用另外一个宏

atf的例子 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值