14
61
103
初级会员
重入一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机、处理器等的中断的时候会发生重入的现象。 一般浮点运算都是由专门的硬件来完成,举个例子假设有个硬件寄存器名字叫做FLOAT,用来计算和存放浮点数的中间运算结果 假设有这么个函数 void fun() { //...这个函数对FLOAT寄存器进行操作 } 假如第一次执行,有个对浮点数操作运算的结果临时存在FLOAT寄存器中,而就在这时被中断了,而中断函数或者另一个进程也调用fun函数,这时第二次调用的fun函数在执行的过程中就会破坏第一次FLOAT寄存器中的结果,这样当返回到第一次fun函数的时候,结果就不正确了。
使用道具 举报
1万
7万
11万
管理员
10
19
49
eric2013 发表于 2020-4-27 17:51 老生常谈的问题了。 对于Cortex-M内核这种带FPU单元的,如果是裸机例子,无需用户操心,编译器会处理。 ...
nextstation 发表于 2020-4-28 19:53 楼主,您说得手动入栈是啥意思?怎么实现手动入栈?
4
1444
1456
至尊会员
morning_enr6U 发表于 2020-4-29 10:38 也就是说操作系统移植的代码里面如果处理了那些需要手工入栈的, 我们自己的应用代码就不需要单独处理了, ...
本版积分规则 发表回复 回帖后跳转到最后一页
|小黑屋|Archiver|手机版|硬汉嵌入式论坛
GMT+8, 2025-5-10 12:28 , Processed in 0.503521 second(s), 24 queries .
Powered by Discuz! X3.4 Licensed
Copyright © 2001-2023, Tencent Cloud.