我目前正在尝试在ARM汇编程序中实现矩阵乘法。我已经阅读了一些关于汇编程序中矩阵计算的教程,它们都在3x3或4x4浮点矩阵上使用NEON指令。但这与我想做的完全不同。我有两个对称的int矩阵,因此两个矩阵的行和列号是相同的,我的汇编函数得到矩阵的大小作为参数,所以我不能像教程中那样为3x3或4x4矩阵编写matMul函数。
所以我的问题是,最好和最简单的方法是什么?甚至可以使用100x100甚至更大矩阵的NEON指令吗?而且单精度和双精度寄存器也是不必要的,因为我只有int数。
另一个问题是,我几乎完全不熟悉ARM汇编程序,因此我完全不了解NEON指令。
答案 0 :(得分:0)
MAIN PROC NEAR
MOV DI,OFFSET M_RESULT
MOV SI,OFFSET M_A
MOV BX,OFFSET M_B
BACK1: MOV CH,N SUB CH,LINE MOV COLUMN,N
BACK2:
MOV AL,CH
MOV X,N
MUL X
ADD SI,AX
MOV AH,0
MOV AL,P
ADD BX,AX
MOV COUNTER,N
MOV TEMP,0
BACK3:
MOV AL,[SI]
MUL [BX]
ADD TEMP,AX
INC SI
ADD BX,N
DEC COUNTER
JNZ BACK3
MOV AX,TEMP
MOV [DI],AX
ADD DI,2
MOV SI,OFFSET M_A
MOV BX,OFFSET M_B
INC P
DEC COLUMN JNZ BACK2
MOV P,0
DEC LINE JNZ BACK1
;
MOV AX,4C00H ;8- End of
INT 21H ;9- processing
MAIN ENDP;程序结束
CODESG结束;细分结束
结束开始;程序结束
由:Mojtaba Alizadeh
INT 21H; 9-处理
主要结束;程序结束
CODESG结束;细分结束
结束开始