当前位置: 首页 > wzjs >正文

外贸网站搜索引擎优化方法黄冈网站建设价格

外贸网站搜索引擎优化方法,黄冈网站建设价格,大型网站模板,品牌推广公司简介【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除 背景 接之前 blog 【OS】【Nuttx】【构建】启…

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

接之前 blog
【OS】【Nuttx】【构建】启动文件
简单分析了下启动文件(具体说应该是描述向量表的文件),下面继续看这个向量表

向量表

向量表是一块特殊的内存区域,用于存储指向中断服务程序 ISR 的地址(interrupt service routine)

  • 当中断发生时,处理器暂停当前的任务,查找向量表并跳转到对应的 ISR 执行
  • 处理完中断后,处理器返回到之前被中断的地方继续执行
  • 向量表位于内存的固定位置,该位置取决于具体的芯片架构,构建时可通过链接脚本将向量表映射到这块区域
  • 向量表不仅包含 ISR 地址,还可以包含堆栈指针,复位处理函数地址(程序复位后第一个执行的函数),不可屏蔽中断(NMI)等特殊入口点地址

下面来看下这个核心的向量表,首先是注释
在这里插入图片描述
有几个关键点:

  • 向量表是一个函数指针数组
  • 第一个元素不是中断处理函数,而是初始栈指针
  • 所有的异常和中断都通过通用处理函数 exception_common 函数进行处理(这里有点问题,应该是代码更新了,注释没更新,应该是 PENSV 之前的系统服务通过 exception_common,其他外设中断处理函数通过 exception_direct)
  • 使用了 gcc 的扩展语法 [2 … NVIC_IRQ_PENDSV] = &exception_common 来初始化连续的多个数组元素

下面来看这个函数指针数组
在这里插入图片描述
这里面有比较多的关键点,首先来看第一个,修饰前缀 const void* const,这涉及到一个非常经典的 C 指针与常量结合的问题

  • const void* 和 void* const 有什么区别?

const void*:指向常量内容的指针

这个修饰前缀有两个含义:

  • 这个指针可以指向不同的地址(指针本身可变)
  • 这个指针所指向的内容不能变,不能通过这个指针去修改内容

举个例子

const void* ptr = &x;
ptr = &y;         // 正确,可以改变指针指向的地址
*(int*)ptr = 10;  // 错误,不能通过 ptr 修改内容

void* const:常量指针

同样有两个含义:

  • 这个指针本身是常量,不能改变指向的地址
  • 这个指针指向的内容可以修改

举个例子

int x = 0;
void* const ptr = &x;ptr = &y;         // 错误,不能改变 ptr 的值,指针本身是 const
*(int*)ptr = 10;  // 正确,可以修改 ptr 所指向的内容

最后总结,const void* const 是两者的结合,修饰的 _vectors[] 数组,数组中的每个元素都是一个 指向常量数据的常量指针,即:

  • 数组成员本身(函数指针)不能被修改
  • 函数指针指向的内容也不允许通过这些指针修改

下面来看下一个点:void* vectos[]

void* vectors[]

C 语言支持基于初始化列表自动推断数组大小的功能,这种不带大小的数组声明方式,通常见于如下两种场景:

  • 作为函数参数传递数组,比如下面这个例子
void func(void* vectors[]) {// 函数体,这里可以通过 sizeof(vectors) 求得数组大小
}
  • 作为全局或静态数组定义的一部分,并结合初始化器使用,比如在现在这个例子中,向量表通过初始化列表来确定其大小
    在这里插入图片描述
    在这里,数组的实际大小由初始化列表中的元素数量决定。编译器会根据初始化列表自动推断数组的大小

除了上述两种场景,如果不在声明的同时进行初始化,只是简单地声明一个不带大小的数组,比如

void* vectors[];

那就需要在其他地方明确指定其大小或通过链接脚本等手段为其分配空间,不然会被优化掉
在这里插入图片描述
在这里插入图片描述
先分析到这,下篇继续


文章转载自:

http://5TX7e1NY.nfdty.cn
http://ZA9Mo8Gl.nfdty.cn
http://Q49sGcPR.nfdty.cn
http://U8VEpkR6.nfdty.cn
http://c7HAVdA7.nfdty.cn
http://vr6jerjq.nfdty.cn
http://LD7tr7f1.nfdty.cn
http://1p8kAQUu.nfdty.cn
http://rhbBsLBx.nfdty.cn
http://M7cXfZ04.nfdty.cn
http://eCQnNyzq.nfdty.cn
http://7YGAOguS.nfdty.cn
http://KUlVU0uX.nfdty.cn
http://0jSMH2C8.nfdty.cn
http://8YvUmAcG.nfdty.cn
http://RyoPcA2R.nfdty.cn
http://4zWmJ410.nfdty.cn
http://sKarpla8.nfdty.cn
http://1Gi8EnmW.nfdty.cn
http://dNntmJHT.nfdty.cn
http://87g3BLwE.nfdty.cn
http://LUfsde8s.nfdty.cn
http://4GSe6YqR.nfdty.cn
http://0DehWLhe.nfdty.cn
http://jr6X1CFw.nfdty.cn
http://ZUzdc6rt.nfdty.cn
http://Ak9qTcXy.nfdty.cn
http://eLWQQEIm.nfdty.cn
http://h74sYnZ7.nfdty.cn
http://n5nSgZD6.nfdty.cn
http://www.dtcms.com/wzjs/623935.html

相关文章:

  • 设计基础网站推荐网站建设属于应用软件吗
  • 呼市赛罕区信息网站做一顿饭工作写作网站推荐
  • 做网站推广有用吗哪个网站下载软件最安全
  • 阿里巴巴如何建设网站首页wordpress弹窗下载
  • 移动电商网站开发需求文档网站后台需求
  • 白酒企业网站建设视觉品牌网站建设
  • 枣庄网站建设公司我的世界做弊端网站
  • 传奇网站装备动态图怎么做学计算机前端好就业吗
  • 苏州市城市建设局网站株洲网站制作与设计
  • 苏州做网站公司认定苏州聚尚网络wordpress菜单的代码
  • 凡科建站和wordpress免费建站网站大全
  • 网站友情链接网站你懂我意思正能量晚上不用下载直接进入
  • 自己的网站怎么做下载链接怎么样做网站爬虫
  • 专业的微商城网站建设wordpress评论通知文章作者
  • 网站下载链接打不开wordpress宽屏
  • 做jsp网站用哪些软件贵阳网站建设是什么意思
  • 网站皮肤样板建设企业网站需要了解什么
  • 网站分页用什么设置上海百度seo公司
  • 成都金牛网站建设公司网站seo优化心得
  • 微信小程序和网站开发有什么区别网站配置系统
  • 如何通过网站做网上报名系统wordpress在线培训
  • wordpress博客站点php做网站难么
  • 做网站是怎么回事建设银行东航龙卡登录东航网站
  • iis上部署手机网站惠州品牌网站建设价格
  • 住房和城乡建设部网站造价网站推广培训机构
  • 广州市网站建设怎么样做网站怎么建站点
  • 有代做医学统计图的网站吗Ie8网站后台编辑文章
  • 做甜品台的网站施工企业
  • 福州网站设计要多少钱丰台路网站建设
  • php怎么做直播网站做基本的网站