一。 试验目的: a。 掌握Blackfin处理器中的计算单元寄存器组的结构和特点; b。 掌握Blackfin处理器的数制特点; c。 掌握Blackfin处理器的指令集和程序编写流程; d。 c语言和汇编语言的互相调用; 二。 参考程序: // 验证数据寄存器基本操作代码 Test register file .section program ; .global _main ; _main : // 32bit 例子; r0.h = 0xffff; r0.l = 0xfffd; r1.h = 0x0000; r1.l = 0x0001; r2 = r0 + r1(ns); nop ; // 32bit 减法运算; r0.h = 0xffff; r0.l = 0xfffd; r1.h = 0x0000; r1.l = 0x0001; r2 = r0 - r1(ns); nop ; // 32bit 带溢出加法运算; r0.h = 0xffff; r0.l = 0xffff; r1.h = 0x0000; r1.l = 0x0001; r2 = r0 + r1(ns); nop ; // 32bit 位运算; r0.l = 0xffff; bitclr(r0, 0); nop ; // 16bit 例子; // 16bit 加法运算; r0.h = 0xfffd; r0.l = 0x0001; r1.h = r0.h + r1.l (ns) ; nop ; //16bit 减法运算; r0.h = 0xfffd; r1.l = 0x0001; r1.h = r0.h - r1.l (ns) ; nop ; // 16bit 带溢出加法运算; r0.h = 0xffff; r1.l = 0x0001; r1.h = r0.h + r1.l (ns) ; nop ; // 16bit 位运算; r0.h = 0xfff0 ; bitset (r0,16) ; nop ; // 验证指针寄存器基本操作代码; // P寄存器例程 ; r0.l = 0x0f01 ; r0.h = 0x00a0 ; r1.l = 0x0001; r1.h = 0x000a ; p0.l = 0xa5b1 ; p0.h = 0x0012 ; r2.l = 0x1000 ; r2.h = 0x1504 ; nop ; [--sp] = r0 ; [--sp] = r1 ; [--sp] = p0 ; [--sp] = r2 ; [--sp] = ASTAT ; nop ; r0.l = 0xffff; r0.h = 0x0015 ; r1.l = 0x0000 ; r1.h = 0x1013 ; // r2.h = 0x1013 ; p0.l = 0x1111; p0.h = 0x240f ; r2 = r0 + r1 (ns) ; nop ; ASTAT = [sp++] ; r2 = [sp++]; p0 = [sp++] ; r1 = [sp++] ; r0 = [ sp++] ; nop ; // 验证DAG寄存器代码: // P寄存器例程 ; r0.l = 0x0000; r0.h = 0x0001; r1.h = 0x0fff ; r1.l = 0xffff; nop ; p1.l = 0x0010 ; p1.h = 0x0f00 ; [p1] = r0 ; nop ; i0.l = 0x0010 ; i0.h = 0x0f00 ; r1 = [i0] ; nop ; _main.end : |