如何在armv7汇编程序中加载多个字符值?

如何在armv7汇编程序中加载多个字符值?,arm,armv7,armv8,Arm,Armv7,Armv8,我使用vldm指令在armv7程序中加载多个字符值, 但所有四个值都加载一个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); } void

我使用vldm指令在armv7程序中加载多个字符值, 但所有四个值都加载一个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);
 }
void sum(){
整数和=0;
char*p=NULL;
p=(char*)malloc(sizeof(char)*10);

对于(int i=0;i,这里是一个典型的教科书示例,用于将多个值从向量库加载/存储到可能保存目标和源地址的通用寄存器

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}}
(gdb)p$q0
{u8={0},u16={0,0,0,0,0,0,0},u32={0,0,0,0},u64={0,0},f32={0,0,0,0},f64={0,0}