首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C到NIOS II程序

C到NIOS II程序
EN

Stack Overflow用户
提问于 2015-04-16 14:17:21
回答 1查看 287关注 0票数 2

我需要用NIOS程序集代码编写以下C代码。并从L1标签了解堆栈状态。

代码语言:javascript
复制
struct lelt 
{
   int value; 
   struct lelt* next;
}

struct lelt x = {3,NULL};

lelt* get_tail(lelt *ptr)
{
   lelt* last; 
   L1: last = NULL; 
   while(ptr != NULL)
   {
      last = ptr; 
      ptr = ptr -> next; 
   }
   return last; 
}

以下是我到目前为止所写的内容,但我不知道如何管理编写剩下的代码,因为我不太熟悉汇编代码中的结构。所以如果有人能帮我解释一下我会很感激的。

代码语言:javascript
复制
x: 
 value .word 3
 next .word 0
get_tail: 
 subi sp, sp,12
 stw ra, 0(sp) 
 stw r16, 4(sp) // ptr
 stw r17, 8(sp) // last
 movia r16,zero,r4
 bne r4,zero,endwhile
 add r17,zero,r16
 ... // i don't know how to write ptr=ptr->next 
endwhile: 
 add r2,r17,zero
 br end
end: 
 ldw ra,0(sp)
 ldw r16,4(sp)
 ldw r17,8(sp) 
 addi sp,sp,12
 ret 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-16 15:04:50

所以我猜r16是你的ptr。结构中的next成员位于偏移量4处。要将其加载到ptr中,只需执行ldw r16, 4(r16)即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29677465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档