C语言运行时需要一定条件,这些条件由汇编来提供。C语言运行主要需要栈(C语言的局部变量都是用栈来实现)
我们写的单片机(51单片机)或应用程序并没有设置栈,原因:51单片机硬件初始化默认可以用的栈,应用程序中我们写的c不是全部的代码,编译器(gcc)在链接的时候会自动帮我们添加一个头,这个头就是一段引导我们的c程序执行的一段汇编代码,这段代码帮我们设置好栈及其他运行时的需要
ARM中37个寄存器,每种模式下都有自己的独立的sp寄存器(r13)原因:如果每种模式都是使用同一个栈的话所以的程序(系统内核程序,用户应用程序)也使用同一个栈,如果应用程序出错(比如栈溢出,递归操作不当),就会导致操作系统的栈也损害,系统程序也崩溃,这样设计不合理。设置多个栈就可以避免这个(连累)问题
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !