摘要:
目录1 内嵌汇编示例2 内嵌汇编样式2.1 模版关键字2.2 汇编指令列表2.3 输出操作数2.4 输入操作数2.5 破坏描述部分3 内嵌汇编使用示例 内嵌汇编(Inline Assembly),允许在高级语言(c或c++)中嵌入汇编语言,从而实现汇编语言和高级语言混合编程。 我之前的一篇学习笔记讲 阅读全文
摘要:
目录1 常用的汇编器指令1.1 定义字符串变量1.2 定义整数变量1.3 定义一个函数2 其它汇编器指令2.1 条件编译与文件引用2.2 宏定义2.3 循环展开2.4 本地标签和程序跳转2 汇编源程序例子 了解了RISC-V的基础指令集以及ABI接口,我们就可以动手写汇编程序了,编写汇编程序有两种常 阅读全文
摘要:
目录1 RISC-V 寄存器使用约定2 Caller-saved 与 Callee-saved2.1 对比几种不同的寄存器保存方式2.2 为什么要分caller-saved与callee-saved?2.3 caller-saved与callee-saved寄存器的灵活使用 寄存器使用约定告诉我们函 阅读全文
摘要:
这一节讲解RISC-V中的栈帧。 1 C语言中的{}的秘密 函数执行的底层其实是操作寄存器,CPU的寄存器是有限的,为什么我们进行一系列函数调用后还能正确运行,这些函数之间是怎么协调使用寄存器的? 答案是:栈 函数之间能随意调用,还能顺利恢复现场,这个就是栈的功劳。为什么我们在代码中并没有操作栈呢? 阅读全文
摘要:
目录1 RISC-V ABI接口2 RISC-V 函数调用约定2.1 入参的传递2.2 返回值的传递 1 RISC-V ABI接口 ABI(Application Binary Interface)为应用程序二进制接口,它定义了应用程序之间或应用程序和操作系统之间进行二进制级交互时必须遵循的规则和约 阅读全文