上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 23 下一页

2013年9月12日

ARM GNU常用汇编语言介绍

摘要: ARM GNU常用汇编语言介绍ARM汇编语言源程序语句,一般由指令,伪操作,宏指令和伪指令组成.ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令。伪操作,是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,在源程序运行汇编程序时处理,而在计算机运行期间没有有机器执行.也就是说,这些伪操作只是汇编过程中起作用,一旦汇编结束,伪操作的使命也就随之消失.宏指令,是一段独立的程序代码,可以插在程序中,它通过伪操作来定义。 1>宏在被使用之前必须提前定义好,宏之间可以互相调用,也可自己递归调用。 2>通过直接书写宏名来使用宏.并本具宏指令的格式输入 阅读全文

posted @ 2013-09-12 11:49 屁屁侠 阅读(2690) 评论(0) 推荐(0) 编辑

2013年9月11日

GNU风格 ARM汇编语法5

摘要: 6、 GNU汇编程序中的常数 十进制数以非0数字开头,如:123和9876; 二进制数以0b开头,其中字母也可以为大写; 八进制数以0开始,如:0456,0123; 十六进制数以0x开头,如:0xabcd,0X123f; 字符串常量需要用引号括起来,中间也可以使用转义字符,如: “You are welcome!\n”; 当前地址以“.”表示,在GNU汇编程序中可以使用这个符号代表当前指令的地址; 表达式:在汇编程序中的表达式可以使用常数或者数值, “-”表示取负数, “~”表示取补,“”表示不相等, 其他的符号如:+、-、*、 /、%、... 阅读全文

posted @ 2013-09-11 18:12 屁屁侠 阅读(808) 评论(0) 推荐(0) 编辑

GNU风格 ARM汇编语法4

摘要: 4、GNU汇编语言定义入口点 汇编程序的缺省入口是_start标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点。 例:定义入口点 .section .data .section .bss .section .text .globl _start _start: 5、 GNU汇编程序中的宏定义 格式如下: .macro 宏名 参数名列表 @伪指令.macro定义一个宏 宏体 .endm @.endm表示宏结束 如果宏使用参数,那么在宏体中使用该参数时添加前缀“\”... 阅读全文

posted @ 2013-09-11 16:50 屁屁侠 阅读(335) 评论(0) 推荐(0) 编辑

GNU风格 ARM汇编语法3

摘要: 3、 GNU汇编程序中的分段 .section伪操作 .section {,””} Starts a new code or data section. Sections in GNU are called .text, a code section, .data, an initialized data section, and .bss, an uninitialized data section. These sections have default flags, and the linker understands the default nam... 阅读全文

posted @ 2013-09-11 16:47 屁屁侠 阅读(385) 评论(0) 推荐(0) 编辑

GNU风格 ARM汇编语法2

摘要: 2、GNU汇编程序中的标号symbol(或label) 标号只能由a~z,A~Z,0~9,".",_等(由点、字母、数字、下划线等组成,除局部标号外,不能以数字开头)字符组成。 Symbol的本质:代表它所在的地址,因此也可以当作变量或者函数来使用。 1>段内标号的地址值在汇编时确定; 2>段外标号的地址值在连接时确定。 Symbol的分类:3类(依据标号的生成方式)。 基于PC的标号。基于PC的标号是位于目标指令前的标号或者程序中数据定义伪操作前的标号。 这种标号在汇编时将被处理成PC值加上(或减去)一个数字常量,常用于表示跳转指... 阅读全文

posted @ 2013-09-11 16:31 屁屁侠 阅读(471) 评论(0) 推荐(0) 编辑

GNU风格 ARM汇编语法1

摘要: 汇编源程序一般用于系统最基本的初始化:初始化堆栈指针、设置页表、操作 ARM的协处理器等。这些初始化工作完成后就可以跳转到C代码main函数中执行。1、GNU汇编语言语句格式 任何Linux汇编行都是如下结构: [:][} @comment instruction为指令 directive为伪操作 pseudo-instruction为伪指令 : 为标号, GNU汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。 comment为语句的注释 下面定义一个"add"的函数,最终返回两个参... 阅读全文

posted @ 2013-09-11 16:21 屁屁侠 阅读(833) 评论(0) 推荐(0) 编辑

u-boot中添加自定义命令

摘要: 1.u-boot命令机制u-boot中,每个命令都使用一个struct cmd_tbl_s结构体定义,该定义在include/command.h中实现:struct cmd_tbl_s{ char *name,//u-boot中执行的命令 int maxargs,//命令所能带的参数个数,最少为1 int repeatable,//该命令是否可重复 int (*cmd)(struct cmd_tbl_s *,int,int,char*[]),//指向该命令对应的源函数 char *usage,//命令的使用提示 char *help//在线帮助信息};u-boot中定义的命令能与具... 阅读全文

posted @ 2013-09-11 15:24 屁屁侠 阅读(656) 评论(0) 推荐(0) 编辑

基于S3C2440的U-BOOT的start.S分析

摘要: 基于S3C2440的U-BOOT的start.S分析 在了解了ARM相关的汇编指令后,同时结合网上各位大虾的提点开始阅读u-boot的启动代码,现将分析过程记录如下可执行文件及内存映射我们可以把可执行文件分为2种情况:存放态和运行态1.存放态:可执行文件经过烧到存储介质上(flash或磁盘)的分布,此时可执行文件通常有2部分组成,代码段和数据段,代码段又分为可执行代码段 (.text)和只读数据段(.rodata),数据段可以分为初始化数据段(.data)和未初始化代码段(.bss),如下:+-------------+-----------| .bss | (ZI)+----... 阅读全文

posted @ 2013-09-11 14:37 屁屁侠 阅读(509) 评论(0) 推荐(0) 编辑

UBoot启动代码第一阶段流程

摘要: http://blog.csdn.net/xautfengzi/article/details/7470134前段时间了看了UBoot的源码,放了一段时间之后忘得差不多了。现做一些注释,方便以后温习。第一阶段代码主要位于start.S中,其流程如下:1.设置中断向量表。2.设置CPU为管理员模式。3.禁狗。4.关中断。5.设置系统时钟。6.跳至cpu_init_crit。(注意bl指令,bl指令是相对跳转,绝对跳转用mov lr,pc。由于此阶段代码是位置无关代码,所以在跳至的细节部分要仔细理解)6.1.使缓存无效。6.2.禁用MMU和缓存。6.3.跳转至lowlevel_init设置内存时钟 阅读全文

posted @ 2013-09-11 09:30 屁屁侠 阅读(445) 评论(0) 推荐(0) 编辑

2013年9月10日

Uboot的bad_save_user_regs

摘要: 下面是一个宏定义,从名字“bad_save_user_regs”就可以猜测它是用来保存程序“出错”时用户态的寄存器的值。从下面的“use bad_save_user_regs for abort/prefetch/undef/swi ...”可以知道,这些“错误”是就是发生abort、prefetch、undef、swi异常时。为什么我把“出错”、“错误”加上引号?因为这些“错误”,有时候是故意加入的,就是为了触发异常处理程序,从而完成某些事情,比如:系统调用就是通过swi异常实现的。CODE: ... 阅读全文

posted @ 2013-09-10 18:12 屁屁侠 阅读(1210) 评论(0) 推荐(0) 编辑

上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 23 下一页

导航