OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9142|回复: 3

关于内联汇编。

[复制链接]

11

主题

36

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2012-8-22
在线时间
0 小时
发表于 2012-10-30 21:32:45 | 显示全部楼层 |阅读模式
关于这段代码:
//跳转到应用程序段
//appxaddr:用户代码起始地址.
void iap_load_app(u32 appxaddr)
{
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法.
jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址)
MSR_MSP(*(vu32*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
jump2app(); //跳转到APP.
}
}  



__asm void MSR_MSP(u32 addr) 
{
    MSR MSP, r0 //set Main Stack value
    BX r14
}

app堆栈顶地址是如何通过内联汇编进行堆栈的更新的? 那个顶地址怎么传进去的? 疑惑...................

成功的欲望强烈到一定程度的时候足够征服世界。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-10-30 22:17:14 | 显示全部楼层
汇编强制设置咯.
应该就是等效寄存器赋值类似的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

36

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2012-8-22
在线时间
0 小时
 楼主| 发表于 2012-10-30 22:22:35 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,那可以这样写吗?

__asm void MSR_MSP(void) 
{
    MSR MSP, r0 =*(vu32*)appxaddr
    BX r14
}

MSR_MSP();
成功的欲望强烈到一定程度的时候足够征服世界。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-10-30 22:37:21 | 显示全部楼层
你试试吧,貌似汇编不支持这种写法吧.
我没怎么用STM32的汇编,不是很熟,不好意思.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 20:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表