
arm汇编
dumb_man
这个作者很懒,什么都没留下…
展开
-
GNU ARM汇编伪操作(Directives) 命令集
伪指令只对程序的编译过程(汇编指令—机器二进制指令)起作用,它能告诉编译器怎样正确的编译程序的某些部分,但编译出来的目标程序里不再有伪指令的任何痕迹。伪指令只是相当于一些用户自定义的编译规则,其本身不产生目标代码。转载:http://blog.sina.com.cn/s/blog_574d08530100hzie.html1.符号定义伪操作操作符 语法格式 说明.e原创 2017-11-20 17:50:24 · 333 阅读 · 0 评论 -
操作影响cpsr的条件码的指令(teq等),与影响关系
1. 简介算术逻辑运算指令:(ADD、ADC、SUB、SBC、RSB、RSC、AND、ORR、EOR、BIC)完成常 用的算术与逻辑的运算,该类指令不但将运算结果保存在目的寄存器中。当这些指令后面加了S(如ADDS时),指令同时更新CPSR中的相应条件标志位。比较指令 (CMP、CMN、TST、TEQ)不保存运算结果,只更新CPSR中相应的条件标志位。它们总是会影响CPSR条件标志位.2、CPSR原创 2017-11-20 17:50:27 · 3847 阅读 · 0 评论 -
汇编程序为什么在调用子函数时会保护r12寄存器
有的汇编程序中发现在做子函数调用时会保护r12寄存器,而在调用的函数中又没有对r12的操作,这是为什么做这个调查。以下是网上找到的原因,因为r12可能并不是被调用的程序会修改,而是可能被linker所修改。所以如果你的汇编是要用到r12,就需要在进行bl等操作时做好保存工作,在调用完再重新恢复的工作。近来在维护一个年久失修的程序, 包括应用,库文件以及一个linux device driver.很原创 2017-11-20 17:50:30 · 1908 阅读 · 0 评论 -
movw与movt
MOVW 把 16 位立即数放到寄存器的底16位,高16位清0MOVT 把 16 位立即数放到寄存器的高16位,低 16位不影响原创 2017-11-20 17:50:33 · 16428 阅读 · 0 评论 -
arm汇编align伪指令
出处:netwalker.blog.chinaunix.net=========================================== 一个值得讨论的伪指令是.align,它可能在很多时候不被人注意,但是不恰当的使用将导致程序无法运行,这种可能性在ARM系统上几乎是百分之百的发生。 .align的作用在于对指令或者数据的存放地址进行对齐,有些CPU架构要求固定的指令长度并且存放原创 2017-11-20 17:51:19 · 3499 阅读 · 0 评论 -
arm的伪指令.weak
.weak 声明其他的同名标号优先于该标号被引用。也就是说,如果有两个标号都是同一个名字。.weak func_aFUNC func_a , :END_FUNC func_a.global func_aFUNC func_aEND_FUNC func_a那么第二个函数将被使用。原创 2017-11-20 17:51:22 · 4543 阅读 · 0 评论 -
ARM WFI和WFE指令
1. 前言 蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂。最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清楚。 WFI(Wait for interrupt)和WFE(Wait for event)是两个让ARM核进入low-power standby模式的指令,由ARM architecture定义,转载 2017-11-20 17:52:45 · 3629 阅读 · 1 评论 -
如何在C或C++代码中嵌入ARM汇编代码
大家知道,用C或者C++等高级语言编写的程序,会被编译器编译成最终的机器指令。这中间,编译器会对代码自动进行优化。但是,这种优化往往不一定非常高效。所以,出于性能优化的目的,对非常关键的代码,任然需要直接用汇编指令编写。并且在C和C++中,是无法直接对寄存器进行操作的,如果要实现的功能需要频繁与底层硬件打交道,也需要用汇编指令编写。GCC编译器支持直接在C或者C++代码中,嵌入ARM汇编代码转载 2017-11-20 17:52:42 · 1958 阅读 · 0 评论