0%

安装 pandoc 及依赖

安装pandoc 和 LaTeX 引擎
使用 pandoc 转换文档为 pdf,需要安装在操作系统上安装 latex(默认使用 LaTeX 引擎),否则会出现错误 pdflatex not found. Please select a different –pdf-engine or install pdflatex。

Read more »

最近研究了下xsaves指令,发现国内中文内容XSAVE(s)相关的太少了。这里简单记一下心得和笔记吧。

总的来说,XSAVE 和 XSAVES 指令的引入是为了支持更复杂的处理器状态,并在多任务环境中实现高效的上下文切换。随着处理器技术的发展,Intel 和 AMD 都引入了许多新的特性和扩展,例如浮点单位、SIMD 扩展(如 MMX、SSE 和 AVX)以及其他功能(如 MPX 和 SGX)。这些扩展和特性增加了处理器的状态大小,意味着传统的上下文保存和恢复机制(如使用 FXSAVE 和 FXRSTOR 指令)不再足够。需要一种高效的方式来保存和恢复处理器状态。
XSAVE 允许更灵活地保存和恢复处理器状态。它引入了一个新的数据结构,该结构可以容纳各种处理器状态组件。XSAVE 还支持功能掩码(RFBM/XINUSE),允许操作系统选择要保存和恢复的状态组件。
尽管 XSAVE 增强了上下文切换的能力,但随着处理器状态的进一步增加,还需要进一步的优化。XSAVES 和 XSAVEC 被设计为 XSAVE 的扩展,提供了更紧凑和高效的保存格式。 特别是,XSAVES 提供了对 SGX 和 MPX 的支持,并为未来的处理器特性提供了兼容性。
与 XSAVE 和 XSAVES 相伴而来的还有其他相关指令,例如 XRSTOR, XRSTORS, XSAVEOPT 等。

Read more »

Kprobes 能够动态地中断任何内核正在执行的指令,可以在几乎任何内核代码地址处捕获,指定在断点被命中时要调用的处理函数。
目前有两种类型的probe:kprobes 和 kretprobes(也称为return probe)。 kprobe 可以插入到内核中的几乎任何指令上;而kretprobe是当指定函数返回时,会触发返回函数调用。
通常,Kprobes会被在内核模块中。在模块的初始化函数中,注册一个或多个probe函数,而在该模块的exit函数中取消注册的函数。后面会贴一些内核的事例代码。

Kprobe

Read more »

最近用到了内核中的一些宏定义(Macro),但一直以来,内核的宏定义学习起来都是比较费劲的,一层套一层的定义,新上手的同学一时间很难搞清楚运行时到底用了哪个宏定义,宏定义展开到底怎样。今天发现一个不错的方法研究内核的宏定义。

使用编译预处理研究宏定义展开

Read more »

名词解释

POSIX: Portable Operating System Interface
A cross-platform specification supported by UNIX operating systems and those considered UNIX-like, such as Linux. The X in the name originally denoted that the interface was “based on UNIX.”

Read more »

今天学到一个知识点X86-64-ABI pre-build X86-64-ABI 下载地址
斗胆翻译下其中的3.2章节

本节介绍了标准的函数调用顺序,包括堆栈框架的布局、寄存器的使用、参数传递等等。标准调用顺序的要求只适用于全局函数。局部函数不能从其他编译单元访问,所以不尽相同。尽管如此,我们还是建议所有的函数在可能的情况下使用标准的调用顺序。

Read more »