![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言
文章平均质量分 82
hanchaoman
这个作者很懒,什么都没留下…
展开
-
LDR指令详解
ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。(1)LDR r0,=name,像这种带等号的是伪指令,而不是ARM指令,LDR 伪指令用于加载立即数或一个地址值到指定寄存器.*如果name是立即数的话:LDR R0,=0X123;//将0X123存入R0 *如果name是个标识符:LDR R0,=NAME;//将NAME的地址存入R0原创 2013-06-24 11:14:19 · 6892 阅读 · 0 评论 -
汇编学习总结记录
1.1. 汇编学习总结记录对于我们之前分析的start.S中,涉及到很多的汇编的语句,其中,可以看出,很多包含了很多种不同的语法,使用惯例等,下面,就对此进行一些总结,借以实现一定的举一反三或者说触类旁通,这样,可以起到一定的借鉴功能,方便以后看其他类似汇编代码, 容易看懂汇编代码所要表达的含义。1.1.1. 汇编中的标号=C中的标号像前面汇编代码中,有很多的,以点开头,加上一个名字的原创 2013-06-24 11:38:48 · 977 阅读 · 0 评论 -
汇编小知识
汇编小知识.section .data汇编程序中以 . 开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊的指示,称为汇编指示(Assembler Directive).section 指示把代码划分成若干个段(Section).data 段保存程序的数据,是可读可写的,C程序的全局变量也属于.data段。本程序中没有定原创 2013-06-24 10:39:09 · 989 阅读 · 0 评论 -
ARM汇编语言调用C函数之参数传递
之前在学习如何在C语言中嵌入汇编时有了解到C语言之前的参数调用是使用寄存器R0 传递第一个参数,R1传递到第二个..一直到R3传递第四个参数.但是实际上有时可能传递的参数非常多,超过8个,或是参数中有浮点数之类,参数也会超过 4个寄存器,对于超出的部份并不使用R4,而是使用堆栈的方式,但具体是如何的方式很多网站就没了下文了,好在在GG的帮助下,让我在凌晨1.30找到了 (为啥老是在半夜呢?)—原创 2013-06-25 14:32:25 · 5549 阅读 · 0 评论 -
七种寻址方式(立即寻址、寄存器寻址)
七种寻址方式(立即寻址、寄存器寻址)一、立即寻址方式操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:MOV AH, 80H ADD AX, 1234H MOV ECX, 123456原创 2013-06-27 14:01:25 · 90706 阅读 · 7 评论 -
ARM LDR 伪指令辨析
ARM LDR 伪指令的格式:1LDR Rn, =expr如果name是立即数的话LDR R0,=0X123;//将0X123存入R0如果name时个标识符LDR R0,=NAME;//将NAME的地址存入R01LDR R0, =0x3FF5000 ; 伪指令: 把 0x3FF5原创 2013-06-27 15:04:29 · 916 阅读 · 0 评论 -
为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈
为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈之前看了很多关于uboot的分析,其中就有说要为C语言的运行,准备好堆栈。而自己在Uboot的start.S汇编代码中,关于系统初始化,也看到有堆栈指针初始化这个动作。但是,从来只是看到有人说系统初始化要初始化堆栈,即正确给堆栈指针sp赋值,但是却从来没有看到有人解释,为何要初始化堆栈。所以,接下来的内容,就是经过一定原创 2013-06-27 14:56:23 · 1602 阅读 · 0 评论