1.Hello World
PowerPC体系是由Freescale(以前的Motorola),IBM和Apple共同合作的结晶。在这里就不叙述它的历史了,直接看看经典的Hello World。
引用了(http://www.ibm.com/developerworks/cn/linux/hardware/ppc/assembly/index.html)"PowerPC汇编-PowerPC汇编简介,Hollis Blanchard"
.data #数据段 msg: .string "Hello, world!\n" len = . - msg #字符串的长度
.text #代码段 .global _start _start: li 0,4 # 系统调用号 (sys_write) li 3,1 # 第一个参数: 文件描述符 (stdout) # 第二个参数: 指向字符串的指针 lis 4,msg@ha # 加载&msg的低16位 addi 4,4,msg@l # 加载&msg的高16位 li 5,len # 第三个参数: 字符串长度 sc # 执行系统调用
li 0,1 # 系统调用号 (sys_exit) li 3,1 # 第一个参数: 返回值 sc # 执行系统调用 |
2.读TB
VEA中定义了Time Base(TB),一个64位寄存器,由两个32位寄存器-TBU和TBL组成,对于user-level App来说,TB寄存器是只读的,每次递增1(加1到TBL上),TB的频率是与实现独立的。
unsigned long long get_tb(void)
{
unsigned long long tb;
__asm__ __volatile(
"loop: \
mftbu %0; \
mftb %0+1; \
mftbu 5; \
cmpw 5,%0; \
bne loop;"
: "=r"(tb)
:
: "memory", "r5");
return tb;
} |
阅读(1872) | 评论(0) | 转发(0) |