硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3015|回复: 2
收起左侧

[μCOS-III] ucosiii的中断栈的疑问求解

[复制链接]

7

主题

19

回帖

40

积分

新手上路

积分
40
发表于 2020-9-18 22:12:47 | 显示全部楼层 |阅读模式
ucosiii的中断栈的疑问求解:
void  OSInitHook (void)
{
                                                                    /* 8-byte align the ISR stack.                            */   
    OS_CPU_ExceptStkBase = (CPU_STK *)(OSCfg_ISRStkBasePtr + OSCfg_ISRStkSize);
    OS_CPU_ExceptStkBase = (CPU_STK *)((CPU_STK)(OS_CPU_ExceptStkBase) & 0xFFFFFFF8);
}
系统初始化OSInit()中初始化钩子函数OSInitHook()时,注释写着8字节对齐,所以OS_CPU_ExceptStkBase=首地址+256,OS_CPU_ExceptStkBase=OS_CPU_ExceptStkBase& 0xFFFFFFF8。
问题1:8字节对齐为啥要先加256,再向下8字节对齐?感觉先+8,再向下8字节对齐也可以啊?256是怎么来的?
问题2:为啥要8字节对齐


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2020-9-19 00:15:17 | 显示全部楼层
1、向下生长的满栈
2、AAPCS要求的。
回复

使用道具 举报

7

主题

19

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2020-9-19 10:17:46 | 显示全部楼层
eric2013 发表于 2020-9-19 00:15
1、向下生长的满栈
2、AAPCS要求的。

忽略了向下生长,感谢!
硬汉哥周末要早点睡觉啊
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 08:25 , Processed in 0.241772 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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