关于为什么要区分caller saved和callee saved registers

主要是如果把所有的寄存器都压栈和出栈,一方面是性能下降,毕竟处理器访问内存的时间是很长的,一个无用的寄存器做保护,压栈和出栈相比计算本身很慢;另一方面,也占用了内存,当函数调用栈很深或者出现递归的时候,就会更加明显。从较深层的原因去分析,为什么会出现caller save和callee save?在
嵌入式 2023年09月19日 165次浏览

RISC-V指令

=====>RISC-V的常见指令相关资料:RSIC-V指令及介绍RISC-V 指令概况
嵌入式 2023年09月08日 137次浏览

MIT6.S081-2020-gdb环境

该版本使用gdb-multiarch会导致无法跟踪ecall进入kernel。因此需要使用riscv64-unknown-elf-gdb,且该gdb在安装riscv64 toolchain时默认没有安装,需要自己下载源码编译安装。
嵌入式 2023年09月07日 161次浏览

三分算法

https://www.acwing.com/file_system/file/content/whole/index/content/1631225/
算法 2023年09月07日 193次浏览

shell常用语法

1.概论2.注释3.变量4.默认变量5.数组6.expr命令7.read命令8.echo命令9.printf命令10.test命令与判断符号[]11.判断语句12.循环语句13.函数14.exit命令15.文件重定向16.引入外部脚本1.概论shell是我们通过命令行与操作系统沟通的语言。shell
Linux 2023年08月10日 200次浏览

Linux驱动之异步通知

阻塞与非阻塞是 APP 询问 驱动设备。异步通知是 驱动设备 主动通知 APP,可以使用信号来实现。流程图分析②:绑定信号与回调函数。使用sighandler_t signal(int signum, sighandler_t handler) 。③:把 APP PID 告诉内核。同时,该 PID
Linux 嵌入式 2023年08月08日 472次浏览

Linux驱动之POLL机制

1、总结应用程序中执行select、poll时,会调用驱动的poll函数,但是不仅仅是这样,还会有其它系统调用~应用程序中执行一次select, 可能会调用驱动的poll两次。底层do_poll是核心,会将进程休眠(所以不用手动去schedule()切换)。唤醒方式为超时被内核唤醒或者一般在中断里面
Linux 嵌入式 2023年08月07日 622次浏览

Linux系统之动态追踪技术

Linux Kernel Tracing/Profiling方式1、ftrace/strace  ftrace是一个内核跟踪框架,可以用于在内核中添加跟踪点并收集跟踪数据。它可以用于分析内核函数的执行路径、性能瓶颈和调试问题。ftrace提供了多种跟踪选项,包括函数追踪、事件追踪和CPU追踪等。  
Linux 嵌入式 2023年08月04日 196次浏览

printk打印信息终端里看不到

有时候需要远程登录 但是这时候显示不了printk 下面几种方法 用于远程登录的时候 显示peintk打印信息1.dmesg这个不用多说,显示启动信息等 同时也可以显示printk 信息cat /var/log/messagescat这个也可以显示启动后printk打印的信息 但不包括启
Linux 嵌入式 2023年08月03日 219次浏览

二维偏序问题

知识讲解  二维偏序模板题。把 (a[i], b[i]) 看成二维平面上的一个红点,(q[i][0], q[i][1]) 看成二维平面上的一个蓝点。我们要对每个蓝点求出它的右上方横纵坐标之和最大的红点。  我们将所有点先按横坐标从大到小排序,然后依此枚举每个点。这样遇到一个蓝点 (x, y),我们只
算法 刷题 2023年06月11日 182次浏览