zibozhangxinxin
zibozhangxinxin
这家伙很懒,什么也没写!

注册于 10年前

回答
3
文章
0
关注者
0

发布于10年前

在 rt_malloc(rt_size_t size)函数内部有这么一条程序:if (size < MIN_SIZE_ALIGNED)
size = MIN_SIZE_ALIGNED;其中MIN_SIZE_ALIGNED = 12, 为什么要设置rt_malloc函数申请的空间最小为12字节呢,请教大牛。

发布于10年前

谢谢!

发布于10年前

谢谢,弄明白了。
但是还有个疑问能帮忙解答一下吗? :
在stack.c中的

  1. rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter,rt_uint8_t *stack_addr, void *texit)
  2. {
  3. rt_uint32_t *stk;
  4. stk = (rt_uint32_t*)stack_addr;
  5. *(stk) = (rt_uint32_t)tentry; /* entry point */
  6. *(--stk) = (rt_uint32_t)texit; /* lr */
  7. *(--stk) = 0; /* r12 */
  8. *(--stk) = 0; /* r11 */
  9. *(--stk) = 0; /* r10 */
  10. *(--stk) = 0; /* r9 */
  11. *(--stk) = 0; /* r8 */
  12. *(--stk) = 0; /* r7 */
  13. *(--stk) = 0; /* r6 */
  14. *(--stk) = 0; /* r5 */
  15. *(--stk) = 0; /* r4 */
  16. *(--stk) = 0; /* r3 */
  17. *(--stk) = 0; /* r2 */
  18. *(--stk) = 0; /* r1 */
  19. *(--stk) = (rt_uint32_t)parameter; /* r0 : argument */
  20. /* cpsr */
  21. if ((rt_uint32_t)tentry & 0x01)
  22. *(--stk) = SVCMODE | 0x20; /* thumb mode */
  23. else
  24. *(--stk) = SVCMODE; /* arm mode */
  25. /* return task's current stack address */
  26. return (rt_uint8_t *)stk;
  27. }

在该函数中只占用了线程栈的64个字节的空间,那么剩余的线程栈从高到低都存放了哪些内容呀?是由编译器控制的吗?

回到
顶部

发布
问题

投诉
建议