成都旅游网站,投诉做网站的电话,杭州seo哪家好,建信建设投资有限公司网站嵌入式软件中的变量存储比较灵活#xff0c;可以将变量存储在内核中#xff0c;此时变量的访问最快#xff1b;也可以将变量存储在ram中#xff0c;此时变量的访问速度次之#xff1b;最后可以将变量存储于flash中#xff0c;此时变量的访问速度最快。#xff08;不考虑… 嵌入式软件中的变量存储比较灵活可以将变量存储在内核中此时变量的访问最快也可以将变量存储在ram中此时变量的访问速度次之最后可以将变量存储于flash中此时变量的访问速度最快。不考虑单片机内核带cache的情况 在实际的应用中可以根据变量的使用情况将变量分配在不同的存储空间搭配合适的数据结构提高程序的运行速度。
1、存储于内核中
1.1 内核寄存器 在函数调用时mcu会根据参数的数量将全部或部分形参和局部变量存储在r0,r1,r2,r3等通用寄存器上方便快速调用。如果形参或局部变量数据过多时会在栈上分配一部分空间用于数据存储。
1.2 特殊寄存器 如果函数的形参中含有浮点型数据如果将编译器配置为硬件浮点计算则此时浮点型数据会被存放于浮点计算专用的寄存器中用于提高运算速度。
2、存储于ram中
2.1 堆中 在使用malloc进行动态内存分配时此时的数据将会被存放在堆上动态内存分配具有一定的灵活性。
2.2 栈中 函数在调用时会将函数的返回地址局部变量等数据压入栈中在退出函数时进行数据弹出完成函数调用。栈是c语言函数调用的基础。
2.3 ram固定地址 全局变量及声明为static的局部变量会被存储在ram的固定地址中数据地址固定比动态内存分配要可靠一些。在安全类产品的应用中会禁用动态内存分配机制。
3、存储于flash中 声明为const类型的变量会被存储于flash中变量值不可改变可以用于存储不可变的数据节省ram空间。