初级会员 
  
	- 积分
 - 78
 
        - 金钱
 - 78 
 
       - 注册时间
 - 2016-8-26
 
      - 在线时间
 - 9 小时
 
 
 
 | 
 
我知道数据储存的起始地址%对齐字节(N)=0才行,但是我不明白有两点 
问题1:UCOSIII的系统中的浮点数打印任务的堆栈大小要8字节对齐,float无论在32位机还是64位机中都是4字节大小, 
                                  可为什么就要8字节对齐呢,而不是4字节对齐?如下程序中的__align(8) CPU_STK        FLOAT_TASK_STK[FLOAT_STK_SIZE]//任务优先级 
#define FLOAT_TASK_PRIO                6 
//任务堆栈大小 
#define FLOAT_STK_SIZE                128 
//任务控制块 
OS_TCB        FloatTaskTCB; 
//任务堆栈数组 
__align(8) CPU_STK        FLOAT_TASK_STK[FLOAT_STK_SIZE]; 
//任务函数 
void float_task(void *p_arg); 
 
问题2:本身编译器都会在编译时都会对齐的,那我们什么时候需要强制对齐呢?就比如说 
                                  LED0与了ED1的任务堆栈数组就没有进行强制的对其 
//任务LED0堆栈 
CPU_STK LED0_TASK_STK[LED1_STK_SIZE]; 
//任务LED1堆栈 
 CPU_STK LED1_TASK_STK[LED1_STK_SIZE]; 
 
 
    
 |   
 
 
 
 |