一. 调用write写到终端
下面是一个helloworld程序,程序运行输出hello.
hello.S
- .text
- .global main
- main:
- push {r0,r1,r2,lr} @压栈,保存寄存器
- mov r0, #1 @输出到终端,fd=1
- adr r1, hello @字符串地址
- mov r2, #7 @字符串长度
- bl write @调用write
- pop {r0,r1,r2,pc} @压栈,恢复寄存器
- hello:
- .asciz "hello \n"
- all:hello
- hello:hello.S
- arm-none-linux-gnueabi-gcc -o $@ $<
- clean:
- rm -rf hello hello.o
这个Makefile用的是gcc,没有用as与ld分开来写,这样比较简洁,测试程序嘛.
执行结果如下:
- root@OK6410:/driver/asm# ./hello
- hello
与write很类似,
- .text
- .global main
- main:
- push {r0,r1,r2,lr} @push
- mov r1, #3
- adr r0, hello
- bl printf
- pop {r0,r1,r2,pc}
- hello:
- .asciz "hello %d \n"