我记得过去看bootloader代码,bootloader里有设置堆栈的地址和堆栈的大小,为什么bootloader里可以设置?设置的原理是什么?是不是说设置堆栈地址就是向某个地址写入了一个地址值,然后程序在运行过程中就根据这个地址上的值决定堆栈的位置?程序在运行过程中是怎么判断堆栈填满导致越界的?是每次入栈都会检测位置吗?