嵌入式多核处理器已经在嵌入式设备领域得到广泛运用,但嵌人式系统软件开发技术还停留在传统单核模式,并没有充分发挥多核处理器的性能。程序并行化优化目前在PC平台上有一定运用,但在嵌入式平台上还很少,另外,嵌入式多核处理器与PC平台多核处理器有很大不同,因此不能直接将PC平台的并行化优化方法应用到嵌人式平台。本文分别从任务并行和缓存优化两方面进行并行化优化的研究,探索在嵌人式多核处理器上对程序进行并行化优化的方法。
刚开始学习STM32汇编,可能不是最简形式;以下程序MDK编译通过了;***********************************************
ALPHA_FORMULA_1 参数传递S=R1,D=R2,A=R3
***********************************************
ALPHA_FORMULA_1
PUSH {R0,R1,R3-R7,LR}
MUL.W R0,R1,R3
MOV.W R4,#0X1F
SUB.W R4,R3
MUL.W R4,R2
LSR.W R4,R4,#0X05
ADD.W R2,R0,R4
POP {R0,R1,R3-R7,PC}
***********************************************
alpha_blend_2 参数传递P1=R1,P2=R2,A=R3
参数p2_t由R0传出
***********************************************
alpha_blend_2
PUSH {R1-R7,LR}
LDR.W R4,=0Xf81f07e0 R4=p1_t = (p1 &0xf81f07e0)
AND.W R4,R1
LDR.W R5,=0X07e0f81f R5=p1 &= 0x07e0f81f
AND.W R5,R1
LDR.W R6,=0Xf81f07e0 R6=p2_t = (p2 &0xf81f07e0)
AND.W R6,R2
LDR.W R7,=0X07e0f81f R7=p2 &= 0x07e0f81f
AND.W R7,R2
ROR.W R4,R4,#16 LOOP_SHIFT_R(p1_t, 16) //p1_t 循环右移 16位
ROR.W R6,R6,#16 LOOP_SHIFT_R(p2_t, 16) //p2_t 循环右移 16位
MOV.W R1,R4 ALPHA_FORMULA_1(p1_t, p2_t, a) //公式套用
MOV.W R2,R6
BL.W ALPHA_FORMULA_1
MOV.W R6,R2
MOV.W R1,R5 ALPHA_FORMULA_1(p1, p2, a)
MOV.W R2,R7
BL.W ALPHA_FORMULA_1
MOV.W R7,R2
LDR.W R2,=0X07e0f81f R6=p2_t &= 0x07e0f81f//
AND.W R6,R2
LDR.W R2,=0X07e0f81f R7=p2 &= 0x07e0f81f
AND.W R7,R2
ROR.W R6,R6,#16 LOOP_SHIFT_R(p2_t, 16) //p2_t循环右移 16位
ORR.W R7,R6 p2_t |= p2
MOV.W R0,R6 return p2_t
POP {R1-R7,PC}
***********************************************
不可以。ARM11与ARM9体系架构已经变了,它是ARMv6的处理器,而ARM9是基于ARMv4。 再者,同个程序,就是同是ARM9的S3C2440与S3C2410,你也不可能直接适用。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)