汇编
文章平均质量分 81
koozxcv
但行好事 莫问前程
展开
-
GCC内联汇编
用内联汇编的主要目的是为了提高效率:假设有一个比较文本差异的程序 diff,它花了 99% 的时间在 strcmp 这个函数上,如果用内联汇编实现的一个高效的 strcmp 比用 C 语言实现的快 1 倍,那么专家花在这个小小函数上的心思就能够将整个程序的效率提高差不多 1 倍,这是很值得去做的"斤斤计较"。还有一个目的就是为了实现 C 语言无法实现的部分,比如说 IO 操作,还有我们上一篇中提到的自主修改 esp 寄存器也是必须用汇编才能实现的。学 gcc 内联汇编最好的导师莫过于 linux 内核,有很原创 2015-11-03 10:36:31 · 804 阅读 · 0 评论 -
ARM/Thumb指令相关。
本文翻译整理自 http://stuff.mit.edu/afs/sipb/project/egcs/src/egcs/gcc/config/arm/README-interworking针对ARM7T处理器,Cygnus GNU Pro ToolKit 支持在已编译的 ARN 指令和 Thumb 指令之间进行来回切换。虽然原文只针对相对古老的 ARM7T 处理器进行介绍,但是原创 2016-01-19 20:23:22 · 1488 阅读 · 0 评论 -
sp lr pc详解
1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。2、连接寄存器r14(LR):每种模式下r14都有自身版组,它有两个特殊功能原创 2016-01-11 18:39:49 · 1911 阅读 · 0 评论