导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→SDRAM C汇编代码复习

* 94077: SDRAM C汇编代码复习

   liufengzhong 
liufengzhong发表的帖子 

 SDRAM C汇编代码复习
嗨。 回顾SDRAM模块和不清楚以下几点:

sdram_block_write_PINOUT_V1_IS42S16400F:

    //r0    adjusted buffer pointer
    //r1    jump amount
    //r2    resource id of dq
    //r3    resource id of we
    //sp[1] resource id of ras
    //sp[2] stop time

    stw r4, sp[0]


从XMOS ABI,第一个3参数调用C程序通过r0保存. . r3和其他通过堆栈。 同意第一个3寄存器传递正确。 然而,将从堆栈指针不sp[0]呢? (而非sp[1])

具体地说,什么是第一个位置传递参数在堆栈上?

这应该是:

r0

r1

r2

r3

sp[0]  // resource id of ras

sp[1] // stop time

或者我的误解? 进一步增加我的困惑,r4存储压入堆栈在sp[0]吗? (不是免费的,应该是sp[2])。 将尝试检查C例程的汇编程序(编译)代码,以便更好地理解这个新主题站在我们这一边。


回答:

在进入传递到该函数的第一个参数在堆栈上传入sp[1](sp[2]的后续参数传递中,sp[3],等等)。 没有参数存储在sp[0]但被允许写这个位置。 这意味着被可以扩展堆栈和保存链接寄存器的值(lr)使用entsp指令函数的开始。 虽然被通常会使用sp拯救了lr(0)不需要这样做,节省了另一个值,如r4是完全有效的。


发表时间:2014年9月22日0:14:57

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:链和两个slicekits 有教程如何连接两个slicekits吗? 或者一个很好
[下一篇帖子]:使用xTIMEcomposer自动化构建 你们好, /P P 我们有充分的启动和运行使用