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

网站描述范例国外免费虚拟主机

网站描述范例,国外免费虚拟主机,在线设计平台哪个好,网站建设销售秘籍【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除 背景 接之前 blog 【OS】【Nuttx】【启动】栈…

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

背景

接之前 blog
【OS】【Nuttx】【启动】栈溢出保护:配置项解析
分析了栈溢出保护配置项的一些内容,还有些没讲,下面补充完

ARMV7M_STACKCHECK

还是这张图,下面分析 help 里面内容,来看下栈溢出保护的一些细节

在这里插入图片描述

  • 这个栈溢出检测机制使用了寄存器 R10 来保存栈底边界地址,注意这里的限定场景是 ARMV7M,如果换了个架构,可能就不一样了,另外,为什么选 R10 寄存器,之前 blog 【OS】【Nuttx】【启动】栈溢出保护:r10 寄存器 已经分析过
  • 每次函数调用时,都会检查当前栈指针 SP 是否低于栈底边界值,以判断是否发生栈溢出,也就是之前经常画的这个图
    在这里插入图片描述
  • 启用此功能后,编译器会在每个函数入口和出口插入检测代码,会带来一些副作用,比如性能下降(因为每次函数调用都要检查),代码体积变大(插入了额外的汇编指令)
  • 当前只支持如下平台:
    STM32(意法半导体 Cortex-M 系列)
    SAM3/4(Microchip 的 Cortex-M 系列)
    SAMA5D(Microchip 的 ARM926EJ-S 平台)
    这个功能的实现不复杂,鼓励开发者为其他平台提交补丁(基本要用内联汇编写,需要精通对应系列芯片架构)
  • 必须使用 gcc 工具链,并且要添加两个编译选项:
    -finstrument-function:编译器在每个函数入口和出口插入自定义代码(用于栈溢出检查逻辑)
    -ffixed-r10:告诉编译器不要使用 r10 寄存器,避免被编译器优化或破坏掉

配置项添加

在 bash 终端输入

./configure menuconfig

之前 blog 【OS】【Nuttx】【构建】配置 stm32 工程 讲过如何配置 configure 脚本。 如果没有配置 configure 脚本,在 nuttx 工程目录下用 make menuconfig 也是一样的

找到配置项 ARMV7M_STACKCHECK(上篇 blog 【OS】【Nuttx】【启动】栈溢出保护:配置项解析 已经介绍过)
在这里插入图片描述
按 Y 可勾选该配置项,可以发现还出来个子项(是否在栈溢出时打断点),现在先不分析这么多
在这里插入图片描述
点击保存,配置项会落入 .config 文件中
在这里插入图片描述
在 Nuttx 根目录下,bash 终端输入

make savemenuconfig

可生成配置文件 defconfig,可以看到 defconfig 配置文件中生成了配置项 ARMV7M_STACKCHECK
在这里插入图片描述
这里有点尴尬,因为是用的 make 配置操作的,但工程是用 cmake 构建的,配合上有点问题,下篇 blog 再讲下这里

编译选项添加

在 armv7-m_gcc.cmake 文件中,有两个编译选项被添加的过程
在这里插入图片描述
这里有两个点讲下:

  • list(APPEND …):cmake 命令,用于向一个列表变量(这里是 PLATFORM_FLAGS)的末尾追加元素,这里追加的是编译选项
  • add_compile_options: cmake 命令,用于将指定的编译器选项添加到当前 CMakeLists.txt 文件及其所有子目录中定义的目标,是全局性的,影响后续所有目标;它还有个兄弟 target_compile_options 命令,target_compile_options 是目标特定的,只影响明确指定的那个目标,这里添加的是 PLATFORM_FLAGS,属于平台编译选项,用全局性的 add_compile_options 也是比较合适的

今天先分析到这里,下篇 blog 分析上面那个问题,如何用 cmake 进行配置项添加

http://www.dtcms.com/a/437608.html

相关文章:

  • 微信小程序一站式开发网站子域名怎么设置
  • 网站开发文档货架 网站建设 牛商网
  • 北京网站建设 云智互联怎么弄数据库备份做网站
  • 长春网站z制作建筑材料价格信息网
  • 住房城乡与建设厅网站首页想要学做网站
  • 无锡网站app微信号软件网站开发
  • 网站建设架构长春网站建设服务
  • 网站做跳转怎么做网站开发建设需要多少钱
  • 中小企业网站多大空间怎么提升学历最快
  • 自己制作网站需要什么南阳网站备案
  • 怎么做企业销售网站福永网站优化
  • 网站建设木马科技网页设计免费模板网站推荐
  • 网站建设协议书怎么写广州做内销鞋的网站
  • 宿豫区建设局网站2022年最火的新闻摘抄
  • 介绍婚纱网站的ppt怎么做手机创建网站免费注册
  • 大型网站开发语言wordpress post slug codex
  • 在网上做贸易哪个网站好朔州城市建设网站
  • 网站开发需求分析包括什么it公论 是建立在什么网站
  • 我要建立自己的网站做电子杂志用什么网站
  • wordpress建电商网站二级域名解析查询
  • vue做的网站域名汇总网站开发编程入门学习
  • 成都网站优化北京建设公司的网站
  • 东莞专业网站推广工具中国室内设计大奖赛
  • 免费微信网站开发酷炫 网站模板
  • 深圳企业网站哪家强上海的装修公司排名
  • 网站开发代码语言企业注册号
  • 搜搜提交网站龙岗做网站公司哪家好
  • 做网站网页文件网站开发实习生
  • 可以做动效的网站wordpress开启用户激活验证
  • 打鱼跟电子游戏网站怎么做c qq 互联网站开发代码