【问题标题】:Access high memory address (+13bits address) in ARC访问ARC中的高内存地址(+13位地址)
【发布时间】:2013-11-29 01:55:56
【问题描述】:

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

那我怎么去那里?

【问题讨论】:

    标签: assembly sparc


    【解决方案1】:

    我不知道 SPARC 程序集,但它必须从寄存器中的地址间接加载。只需将常量加载到寄存器,然后从该常量地址加载内存


    更新demo

    void set_register(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
    

    【讨论】:

    • 是的,好像是这样。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2010-11-01
    • 2012-01-05
    • 2011-04-18
    • 2010-09-12
    • 2021-10-28
    • 2013-12-31
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多