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

 *第56905篇: SDRAM C汇编代码复习

  
楼 主:liufengzhong 2014年9月22日00:14
 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是完全有效的。


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:链和两个slicekits

[下一篇主题]:使用xTIMEcomposer自动化构建