Hu Zhenyu's Blog


访客计数:
net traffic statistics

about

ARM学习笔记(汇编)

虽然现在的操作系统大多是用C语言写成的,不过在底层还是有许多的代码是使用汇编语言写的。汇编语言负责编写启动、堆栈初始化、系统运行段划分等关键部分的代码,而C语言则用在设计算法、逻辑等与硬件关联不大的地方,解决复杂问题。所以我们还是需要了解一些汇编语言的写法,至少要能够读懂一个汇编语言写出的程序。

先写一个简单的例子:

.global helloworld
.equ REG_FIFO, 0x50000020
.text 
.align 2
 helloworld:
    ldr r1,=REG_FIFO
    adr r0, .L0
.L2:
    ldrb r2,[r0],#0x1
    str r2,[r1]
    cmp r2,#0x0
    bne .L2
.L1:
    b .L1
.align 2
.L0:
    .ascii "hello world\n\0"

这就是一个简单ARM汇编版的“hello world”。 我们先简单介绍一下以上程序中使用到的伪指令。

  1. .global 让global后的符号对链接器可见
  2. .equ 类似于C语言中的#define 定义一个常量
  3. .align n 代码按照2的n次方对齐
上一篇: LaTeX Test
下一篇: ARM体系下的GCC内联汇编


知识共享许可协议

本站采用 知识共享署名-非商业性使用-相同方式共享3.0 中国大陆许可协议 进行许可,转载请注明出处。

推荐使用 chrome 浏览器浏览本站。