如何编写ARMGNU汇编代码来编写C = A + B?

问题描述

这是我的ARM程序集列表文件。我想编写汇编代码来计算:C = A + B;当我“全部使用”时,出现以下错误:

错误:未定义的符号r5用作立即值

错误:未定义的符号r6用作立即值

我是汇编文件的新手,所以我有点迷路。我应该在.text部分中进行哪些更改以消除错误。还告诉我“对三个内存访问使用单点寻址(DS)。每个内存访问 应该使用标签计算出的偏移量(没有硬编码的文字偏移量值)。“

   SET_TARGET

  .text
  
  FUNCTION main,global

    push {r4,r5,r6,r7,lr}


      ldr  r4,=C //Store symbol C inside r4
      ldrb r5,=A //Store symbol C inside r4
      ldrh r6,=B //Store symbol C inside r4
      add  r4,r5 //Add A to C
      add  r4,r6 //Add B to C as well
    all_done: 

    pop {r4,lr}
  
      bx lr

  ENDFUNC main

  .data

      .org 234
      .align 2,0xa5   

DS:    .word    0xbbbbbbbb

A:    .byte     123

      .align    1,0xa5
B:    .short    47587

      .align    2,0xa5
C:    .word     ~0
      .align    3,0xa5
      .word 0xeeeeeeee

  .end

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)