-1

我正在使用 vldm 指令在 armv7 程序中加载多个 char 值,但所有四个值都在加载一个 s 寄存器,但我需要在浮点寄存器(q0)中扩展这些值。

请帮我。这是我的C代码:

 void sum(){ 
 int sum =0;
 char *p =NULL;
 p=( char *) malloc(sizeof( char ) *10); 
 for( int i=0; i<16;++i){
   p[i]=i; sum +=i;
 } 
 printf("sum =%d\n",sum);
 }
4

1 回答 1

0

这是一个典型的教科书示例,用于从向量库加载/存储多个值到可能保存目标和源地址的通用寄存器。

VLDM r1!, {d0-d7} 
VSTM r0!, {d0-d7} 

如果您使用 gdb,您可能会更好地了解一组特定的银行或寄存器组。

(gdb) p $q0
 {u8 = {0 <repeats 16 times>}, u16 = {0, 0, 0, 0, 0, 0, 0, 0}, u32 = {0, 0, 0, 0}, u64 = {0, 0}, f32 = {0, 0, 0, 0}, f64 = {0, 0}}
于 2016-10-18T04:47:13.167 回答