x86/ARM汇编
Alan的修炼
12年读研究生,一路走来,接触和学习到很多知识,看到了以前不曾想到的风景,感悟到很多。这里进行梳理总结。
展开
-
.cfi指令解读(三)——Dwarf2 Exception Handler HOWTO
转自:http://gcc.gnu.org/wiki/Dwarf2EHNewbiesHowto这篇有空再翻译,先看着吧。。。。Authors: Will Cohen and Andwrew Macleod, Red Hat Inc. Description of EHException Handling (EH) is provided by languag转载 2013-07-13 22:08:15 · 2170 阅读 · 0 评论 -
ARM汇编指令的一些总结
转自:http://blog.chinaunix.net/u2/62218/showart_486059.htmlARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了。比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧。 @ disable watch dog timer mov r1, #0x530转载 2013-07-15 14:59:24 · 775 阅读 · 0 评论 -
常用ARM汇编指令及ATPCS规则
转自:http://zhiqi329.blog.163.com/blog/static/40052542008529376770/在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时的初始化,进出中断时的环境保存、恢复,对性能要求非常苛刻的函数等。1、相对跳转指令: b 、 bl 不同之处在于: bl 指令除了跳转之外,还将返回地址( bl 的下一条指令的地址)保转载 2013-07-16 11:30:52 · 700 阅读 · 0 评论 -
ARM GCC 内嵌(inline)汇编手册
转自:http://blog.chinaunix.net/uid-20706279-id-1888741.html关于这篇文档这篇文章是本人为方便各位业界同仁而翻译,方便大家开发底层代码使用,转载请注明出处,谢谢。要是你E文功底好,本人还是建议阅读E文版的。http://www.ethernut.de/en/documents/arm-inline-asm.html 对于基转载 2013-07-16 12:51:28 · 780 阅读 · 0 评论 -
Arm浮点指令
转自:http://blog.csdn.net/yyt7529/article/details/4401926指令索引ABS绝对值ACS反余弦ADF加法ASN反正弦ATN反正切CMF比较浮点值CNF比较取负的浮点值COS余弦DVF除转载 2013-07-15 22:50:40 · 1143 阅读 · 0 评论 -
为什么带符号的8位二进制数是-128~127啊!而不是-127~127啊!
转自:http://blog.csdn.net/fengyunjh/article/details/6161821因为一个带符号数和一个不带符号数一样,8位能表示256个值,如果是-127~127的话,只有255个数!那还少一个。因为7位可以表示128个数,那加上正负肯定能表示256个不同的数。+0的补码就是其原码,也就是说是0000 0000而已(对于8位来说)-0的补码是转载 2013-07-15 16:22:40 · 1165 阅读 · 0 评论 -
ARM7各种指令的周期数
转自:http://www.elecfans.com/emb/arm/2009071678028.htmlARM7具有3级流水线结构(取指、译码、执行),对大多数指令来说每条流水线的处理都是单周期的,不过某些情况下,取指和执行的周期数会延长,导致流水线进入stall状态,指令执行时间超过1个周期。 经过在LPC213x/214x(NXP ARM7TDMI-S)上的试验,得出各类指令的执转载 2013-07-15 17:12:29 · 9786 阅读 · 0 评论 -
ARM指令集
转自:http://www.hackol.com/news/201007290736384121581.shtml 特点:Load / Store结构(存储器操作仅包括load和store,所有其他操作在寄存器中完成)32位固定指令宽度3地址指令格式(即两个源操作数和结果寄存器都独立指定)每条指令都条件执行可在单周期执行的单条指令内同时完成一项普通以为操作和一项普通转载 2013-07-15 22:00:14 · 1076 阅读 · 0 评论 -
MSDN上关于ARM芯片浮点运算的资料
转自:http://bbs.ednchina.com/BLOG_ARTICLE_1899924.HTM ARM 处理器并不支持浮点运算 (Floating Point Math)。所有的浮点运算都是在浮点运算模拟器上进行,因此特别缓慢。需要浮点运算的函式,常要耗费数千个循环才能执行完毕。这就是为何游戏开发时,通常都使用定点 (Fixed Point) 格式的运算。定点转载 2013-07-15 22:51:41 · 765 阅读 · 0 评论 -
GCC ARM C语言嵌入汇编语法
(转:http://www.ethernut.de/en/documents/arm-inline-asm.html)ARM GCC Inline Assembler CookbookAbout this documentThe GNU C compiler for ARM RISC processors offers, to embed assembly language转载 2013-07-16 22:59:40 · 2909 阅读 · 0 评论 -
ARM指令中的条件代码
转自:http://www.eepw.com.cn/article/56794.htmARM指令集中所有ARM指令都是可以带条件执行的。下面是条件代码的列表:EQ : 等于 如果一次比较之后设置了 Z 标志。 NE : 不等于 如果一次比较之后清除了 Z 标志。 VS : 溢出设置 如果在一次算术操作之后设置了 V 标志,计算的结转载 2013-07-16 14:57:09 · 1389 阅读 · 0 评论 -
【转】ARM指令集
ARM指令集 6种类型(53种主要助记符) : 数据处理指令(22种主要助记符) 跳转指令(4种主要助记符) Load/Store指令(16种主要助记符) 程序状态寄存器指令(2种主要助记符) 协处理器指令(5种主要助记符) 软件中断指令 (2种主要助记符) 数据处理指令 数据处理指令大致可分为3类: 数据传送指令; 算术逻辑运算指令;转载 2013-07-15 09:21:51 · 803 阅读 · 0 评论 -
汇编指令
百科名片汇编指令是汇编语言中使用的一些操作符(如mov,inc,loop)和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。目录数据传输算术运算逻辑运算串指令程序转移其他指令展开数据传输转载 2013-07-14 20:03:06 · 1081 阅读 · 0 评论 -
多重加载/存储 n 个寄存器/警告
转自:http://scc.qibebt.cas.cn/docs/optimization/VTune(TM)%20User's%20Guide/mergedProjects/analyzer_ec/mergedProjects/reference_olh/XScale_HH/LipsXSc/Load_Store_Multiple_of_n_Register.htmXSC_LDMSTM_N转载 2013-07-14 23:07:22 · 955 阅读 · 0 评论 -
.cfi指令解读(二)
转自:http://sourceware.org/binutils/docs/as/CFI-directives.html先看吧,时间太紧了没时间翻译。等什么时候有时间再说吧。7.11 .cfi_sections section_list.cfi_sections may be used to specify whether CFI directives should emit.e转载 2013-07-13 22:01:33 · 10173 阅读 · 0 评论 -
.cfi指令解读(一)
CFI(calling frame info)的作用是出现异常时stack的回滚(unwind)而回滚的过程是一级级CFA往上回退,直到异常被catch。DWARF4标准的section 6.4:The call frame is identified by an address on the stack. We refer to this address as the Canon转载 2013-07-13 22:03:17 · 10300 阅读 · 2 评论 -
GCC生成汇编文件解析
转自:http://blog.chinaunix.net/uid-22679909-id-1771440.html【示例代码1】(1)C代码(test.c)1 #include 23 void func()4 {5 return;6 }78 int main(void)9 {10 return 0;11 }(2)编译命令:转载 2013-07-13 20:49:29 · 2252 阅读 · 0 评论 -
AT&T汇编语言与GCC内嵌汇编简介
一、AT&T 格式Linux 汇编语法格式 在 AT&T 汇编格式中,寄存器名要加上 '%' 作为前缀;而在 Intel 汇编格式中,寄存器名不需要加前缀。在 AT&T 汇编格式中,用 '$' 前缀表示一个立即操作数;而在 Intel 汇编格式中,立即数的表示不用带任何前缀。例如:寄存器和立即数 AT&TIntel寄存器pus转载 2013-07-13 20:57:00 · 2389 阅读 · 0 评论 -
ARM ATPCS规则 栈分配 浅析
转自:http://blog.csdn.net/dance_rise/article/details/8450411首先看一下面的代码:ATPCS.c[html] view plaincopyint func_1(int a, int b, int c, int d) { return a + b转载 2013-07-14 22:44:29 · 1063 阅读 · 1 评论 -
整理关于汇编的东西(一)
linux c 中嵌入汇编 为了提高代码的执行效率,有时程序中需要使用汇编语言来编制源代码。这就涉及在两种语言的相互调用问题,而且linux 使用的是 AT&T 的汇编语言格式,与 INTEL 汇编的有所区别,详细可以参考相关书籍。 在汇编应用程序中调用 C 函数主要涉及汇编程序如何向 C 函数传递参数以及相关寄存器的保存,我们先看一个将C 程序转换编译成汇编程序的代码,看转载 2013-07-08 15:47:25 · 875 阅读 · 0 评论 -
整理关于汇编的东西(四)
分析.cpp文件编译生成的汇编文件里语句的作用?1234int main(int argc,char** argv){return 1;}?1g++ -S test.cpp转载 2013-07-08 16:58:42 · 1168 阅读 · 0 评论 -
arm汇编基础(转)
先看个例子:void test2(int a,int b,int c){ int k=a,j=b,m=c;}GCC反汇编:00000064 :mov ip, sp //IP=SP;保存SPstmdb sp!, {fp, ip, lr, pc} //先对SP减4,再对fp,ip,lr,pc压栈。--------转载 2013-07-15 09:48:46 · 716 阅读 · 0 评论 -
整理关于汇编的东西(三)
汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, espeax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ; //可以认为是给变量eax加上-2转载 2013-07-08 16:24:24 · 721 阅读 · 0 评论 -
整理关于汇编的东西(二)
2.6.1 AT&T与Intel汇编语言的比较 我们知道,Linux是Unix家族的一员,尽管Linux的历史不长,但与其相关的很多事情都发源于Unix。就Linux所使用的386汇编语言而言,它也是起源于Unix。Unix最初是为PDP-11开发的,曾先后被移植到VAX及68000系列的处理器上,这些处理器上的汇编语言都采用的是AT&T的指令格式。当Unix被移植到i386时,自然也就采转载 2013-07-08 15:50:29 · 742 阅读 · 0 评论 -
CISC(复杂指令集)与RISC(精简指令集)的区别
转自:http://mengx.blog.51cto.com/157987/47506CISC(复杂指令集)与RISC(精简指令集)的区别复杂指令集计算机(CISC) 长期来,计算机性能的提高往往是通过增加硬件的复杂性来获得.随着集成电路技术.特别是VLSI(超大规模集成电路)技术的迅速发展,为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复转载 2013-09-10 16:32:41 · 1393 阅读 · 0 评论