002--汇编(函数)

一、bl指令

cpu从何处执行指令是由PC中的内容决定的,我们可以通过改变PC的内容来控制CPU执行目标指令
ARM64提供了一个mov指令(传送指令),可以用来修改大部分寄存器的值,比如
mov x0,#10、mov x1,#20
但是,mov指令不能用于设置pc的值,arm64没有提供这样的功能
Arm64提供另外的指令来修改PC的值,这些指令统称为转移指令,最简单的是bl指令

二、栈

是一种具有特殊的访问方式的存储空间(后进先出,LIFO)


15193998892055.jpg

三、bl和ret指令

bl标号
将下一条指令的地址放入lr(x30)寄存器
转到标号处执行指令
ret
默认使用lr(x30)寄存器的值,通过底层指令提示CPU此处作为下条指令地址!
ARM64平台的特色指令,它面向硬件做了优化处理的
x30寄存器
x30寄存器存放的是函数的返回地址.当ret指令执行时刻,会寻找x30寄存器保存的地址值!
注意:在函数嵌套调用的时候.需要讲x30入栈!

四、函数和参数返回值

ARM64下,函数的参数是存放在X0到X7(W0到W7)这8个寄存器里面的.如果超过8个参数,就会入栈.
函数的返回值是放在X0 寄存器里面的.

五、函数的局部变量

函数的局部变量放在栈里面.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容