ARM汇编程序中的可变大小的int矩阵

时间:2014-02-02 14:16:13

标签: c assembly matrix int arm

我目前正在尝试在ARM汇编程序中实现矩阵乘法。我已经阅读了一些关于汇编程序中矩阵计算的教程,它们都在3x3或4x4浮点矩阵上使用NEON指令。但这与我想做的完全不同。我有两个对称的int矩阵,因此两个矩阵的行和列号是相同的,我的汇编函数得到矩阵的大小作为参数,所以我不能像教程中那样为3x3或4x4矩阵编写matMul函数。

所以我的问题是,最好和最简单的方法是什么?甚至可以使用100x100甚至更大矩阵的NEON指令吗?而且单精度和双精度寄存器也是不必要的,因为我只有int数。

另一个问题是,我几乎完全不熟悉ARM汇编程序,因此我完全不了解NEON指令。

1 个答案:

答案 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结束;细分结束     结束开始