Assembly 访问ARC中的高内存地址(+;13位地址)
我被告知必须加载存储在内存位置0xA033C000中的信息。二进制中的该位置用超过13位(1010000000110011000000000000)写入。然而,ARC中load的指令格式规定,如果我要使用一个常量来到达该地址,该常量必须是13位长(或更低,以0结尾)Assembly 访问ARC中的高内存地址(+;13位地址),assembly,sparc,Assembly,Sparc,我被告知必须加载存储在内存位置0xA033C000中的信息。二进制中的该位置用超过13位(1010000000110011000000000000)写入。然而,ARC中load的指令格式规定,如果我要使用一个常量来到达该地址,该常量必须是13位长(或更低,以0结尾) 那个么我怎样才能到达那个里呢?我不知道SPARC程序集,但它一定是从寄存器中的地址间接加载的。只需将常量加载到寄存器,然后从该常量地址加载内存 更新: void set_寄存器(int x) { volatile int*cons
那个么我怎样才能到达那个里呢?我不知道SPARC程序集,但它一定是从寄存器中的地址间接加载的。只需将常量加载到寄存器,然后从该常量地址加载内存
更新:
void set_寄存器(int x)
{
volatile int*const reg=(volatile int*)0xA033C000;
*reg=x;
}
装配输出
set_register:
save %sp, -96, %sp
sethi 2624752, %i1
st %i0, [%i1]
ret
restore
是的,似乎就是这样。谢谢