STM32不同地址里的程序运行的是哪一个

STM32不同地址里的程序运行的是哪一个,第1张

STM32不同地址里的程序运行的LED0=0这条C指令编译器把它转换成信档了3条汇编指令MOVS、LDR、STR,这三句汇编分别对应的机器码就是2000、490B、6008。

STM32不同地址一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和滑皮乱数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

STM32不同地址大端模式:

STM32不同地址所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,握禅这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放。

例子:0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000。0000440: b484 6c4e 004e ed00 0000 0000 0100 0000。在大端模式下,前32位应该这样读: e6 84 6c 4e ( 假设int占4个字节)。

C 语言是在 Unix 中桥樱发明的,为 Unix 系统的编程语言,它对文件的处理遵循一个基本的原则:

文件是流式的,可以被任意的拼接并且拼接后仍然保证完整性

在 Unix 中 \n 符号被定义为一扰消瞎行的『结束符』,换句话说,如果一行的结尾没有 \n 视为这一行没有结束,换句话说这个文件不完整,也就是说这根本不是一缓空个合法的文本文件。

在 Windows 中,微软把 \n 定义为两行之间的『分隔符』而非结束符,所以 Unix 文件结尾的 \n ,在 Windows 看起来就是一个空行,而这一个空行在 Unix 中并不存在,如果你使用 Vim 之类的文本编辑器,会根本看不到最后这个空行。

不遵守标准会带来的问题是:如果 \n 是两行之间的分隔符,那么最后一行不带 \n,结果是拼接两个文件时,后一个文件的第一行就会被拼到前一个文件的最后一行,这很可能会造成语意错误。

比较常见的例子是:

前一个文件最后一行是 } 后一个文件第一行是 #include,如果 } 后面没有结束符,拼接之后就成了 }#include ,立即发生语法错误。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12557993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存