Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 访问ARC中的高内存地址(+;13位地址)_Assembly_Sparc - Fatal编程技术网

Assembly 访问ARC中的高内存地址(+;13位地址)

Assembly 访问ARC中的高内存地址(+;13位地址),assembly,sparc,Assembly,Sparc,我被告知必须加载存储在内存位置0xA033C000中的信息。二进制中的该位置用超过13位(1010000000110011000000000000)写入。然而,ARC中load的指令格式规定,如果我要使用一个常量来到达该地址,该常量必须是13位长(或更低,以0结尾) 那个么我怎样才能到达那个里呢?我不知道SPARC程序集,但它一定是从寄存器中的地址间接加载的。只需将常量加载到寄存器,然后从该常量地址加载内存 更新: void set_寄存器(int x) { volatile int*cons

我被告知必须加载存储在内存位置0xA033C000中的信息。二进制中的该位置用超过13位(1010000000110011000000000000)写入。然而,ARC中load的指令格式规定,如果我要使用一个常量来到达该地址,该常量必须是13位长(或更低,以0结尾)


那个么我怎样才能到达那个里呢?

我不知道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

是的,似乎就是这样。谢谢