2017-06-07 14 views
0

参考マニュアルからARM & Neon命令セットを学びました。今私は)(上記の機能addArrため、ARMプロセッサであることを利用したいARMアセンブリの実行方法?

void addArr(int *a,int *b){ int i=0; 
for(i=0;i<4;i++){ 
    a[i]=a[i]+b[i]; 
    } 
} 
int main(){ 
int a[4]={0,1,2,3}; 
int b[4]={0,1,2,3}; 
addArr(a,b); 
return 0; 
} 

、私は今、それらの間に相互接続する方法を

@by default r0- address of a, r1- address of b 

VLD1.I32 D0,D1,[R0]!  @loading 128 bit of input , i.e 4 element(32*4=128) of a 
VLD1.I32 D2,D3,[R1]!  @loading 128 bit of input , i.e 4 element(32*4=128) of b 
VADD.I32 Q0, Q1, Q2   @q0(0:31)=1st element of a + 1st element of b ... till 4 element 

としてアセンブリコードを書かれていますか?アームアセンブリのためのいくつかの構文がなければなりません。いくつかの良い読書を共有してください。 注:論理をチェックしないでください。&本来の方法を提案しないでください。

答えて

0

Procedure Call Standardに従う必要があります。

次に、addArr()を見つける場所をCに知らせるために、いくつかの識別子をリンクする必要があります。 アセンブラにはEXPORT addArrが必要です.Cでは、__asm void addArr()のような宣言が必要です
これはツールチェーンによって異なります。

関連する問題