打印

内嵌汇编,如何把一个全局变量地址赋值一个寄存器?

[复制链接]
3208|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
voidx|  楼主 | 2010-3-25 08:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
a_ziliu| | 2010-3-25 20:18 | 只看该作者
有個簡單的作法,先用指標指向這個記憶体位址,在程式中可以對這個記憶體操作。
在匯編中,直接對記憶體的位址操作即可。

使用特权

评论回复
板凳
X-Hawk| | 2010-3-26 01:31 | 只看该作者
这是IAR帮助中的例子,使用一个DCD flag达到目标,
但是怎么看[pc,#0]都写错了,#0要不要改成其他值,您验证一下。
另:比较推荐asm整个函数。

      bool flag;
      void foo()
      {
        while (!flag)
        {
          asm("   ldr r2,[pc,#0]   \n" /* r2 = address of flag */
              "   b .+8            \n" /* jump over constant   */
              "   DCD flag         \n" /* address of flag      */
              "   ldr r3,[pc,#0]   \n" /* r3 = address of PIND */
              "   b .+8            \n" /* jump over constant   */
              "   DCD PIND         \n" /* address of PIND      */
              "   ldr r0,[r3]      \n" /* r0 = PIND            */
              "   str r0,[r2]");       /* flag = r0            */
        }
      }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:上官一出惊天地,   金虹一现震江湖。

35

主题

118

帖子

2

粉丝