arm汇编函数返回.pdfVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

arm汇编函数返回

ARM汇编语言是一种底层的程序设计语言,用于编写嵌入式系统和

操作系统等应用程序。在ARM汇编语言中,函数的返回值是非常重

要的,它可以将计算的结果返回给调用方。本文将围绕ARM汇编函

数的返回值展开讨论,探讨其相关特点和使用方式。

一、ARM汇编函数的返回方式

在ARM汇编语言中,函数的返回值通常通过寄存器来传递。ARM体

系结构中,常用的返回寄存器是R0,它用于存储函数的返回值。在

函数执行完毕后,将结果存储在R0寄存器中,然后通过函数调用指

令返回到调用方。

二、ARM汇编函数的返回值类型

ARM汇编语言支持多种数据类型的返回值,包括整型、浮点型和结

构体等。对于整型和浮点型的返回值,可以直接通过R0寄存器返回;

对于结构体等复杂类型的返回值,通常需要通过传递指针的方式返

回。

三、整型返回值的示例

下面以一个简单的示例来说明整型返回值的使用方式:

```

.globalmain

.text

main:

push{lr};保存返回地址

blfunc;调用func函数

movr1,r0;将返回值保存到r1寄存器

pop{pc};恢复返回地址并返回

func:

movr0,#123;将123存储到r0寄存器,作为返回值

bxlr;返回到调用方

```

在上述示例中,我们定义了一个名为`func`的函数,它将常数123

作为返回值。在`main`函数中,我们通过`bl`指令调用了`func`函

数,并将返回值保存在r1寄存器中。

四、浮点型返回值的示例

对于浮点型的返回值,ARM汇编语言使用特殊的浮点寄存器来传递。

下面以一个简单的示例来说明浮点型返回值的使用方式:

```

.globalmain

.text

main:

push{lr};保存返回地址

blfunc;调用func函数

vmovs1,s0;将返回值从s0寄存器复制到s1寄存器

pop{pc};恢复返回地址并返回

func:

vldrs0,=3.14;将3.14加载到s0寄存器,作为返回值

bxlr;返回到调用方

```

在上述示例中,我们通过`vldr`指令将常数3.14加载到浮点寄存器

s0中,作为返回值。在`main`函数中,我们通过`vmov`指令将返回

值从s0寄存器复制到s1寄存器中。

五、结构体返回值的示例

对于结构体等复杂类型的返回值,通常需要通过传递指针的方式返

回。下面以一个简单的示例来说明结构体返回值的使用方式:

```

.globalmain

.text

struct:

.word1;结构体成员1

.word2;结构体成员2

main:

push{lr};保存返回地址

blfunc;调用func函数

ldrr1,[r0,#0];将结构体成员1的值读取到r1寄存器

ldrr2,[r0,#4];将结构体成员2的值读取到r2寄存器

pop{pc};恢复返回地址并返回

func:

ldrr0,=struct;将结构体指针存储到r0寄存器,作为返回

bxlr;返回到调用方

```

在上述示例中,我们定义了一个名为`struct`的结构体,包含两个

成员。在`func`函数中,我们将结构体指针存储在r0寄存器中,并

通过`bx`指令返回到调用方。在`main`函数中,我们通过`ldr`指令

将结构体成员的值读取到相应的寄

文档评论(0)

188****7710 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档