编译原理
文章平均质量分 74
btchengzi0
这个作者很懒,什么都没留下…
展开
-
ARMCC汇编方式
一、目的本文分析ARMCC编译器编译出来的文件对应的汇编代码,旨在帮助C语言程序员写嵌入式代码时分析堆栈使用问题和优化C语言代码。二、材料1、工具编译器:Keil5 ARMCC反编译工具:fromelf.exe2、c语言源码struct LG_BaseLockFuncs_t; struct DynMem_Init_t { void * pool; //point to start addre...原创 2018-01-09 17:59:17 · 4906 阅读 · 0 评论 -
可重入中断
一、目的 对于ARM9来说,进入IRQ后,会禁用IRQ,这个时候,即使有更高优先级的中断触发,也是要等该中断退出后才能响应,是不可重入的。本文旨在介绍可以被高优先级中断打断的中断程序,亦即可重入中断。二、原理 要做到可重入,必须开启被禁用的中断。但开启后要面临一个问题,就是LR是会被中断自动设置的,LR会被破坏,CPSR也是会被自动备份到CPSR_irq里面去,CPSR_irq也会被破...原创 2018-03-08 18:27:35 · 1126 阅读 · 0 评论 -
UCOSII任务挂起点跟踪
一、目的 一般来说ARM的IDE/调试器不提供UCOSII多任务任务调用函数调用关系的查询,本文旨在提供一种查看UCOSII任务调用堆栈的方法。二、UCOSII任务切换简介 UCOSII任务切换方式有两种,一种是通过触发软中断来切换,另一种是直接跳转(分中断里跳转和任务执行中跳转)。无论怎样切换,都是把当前执行的任务内容压入当前任务的堆栈中去,然后设置任务SP的值为优先级最高的...原创 2018-03-01 16:40:06 · 357 阅读 · 0 评论 -
MDK链接器的符号的使用
一、符号名与C语言变量的关系 局部变量放在栈里面,不会被其他地方引用,无需链接,故符号表里不存储局部变量; 全局变量或静态变量的变量名与符号表里的名字是一一对应的,所不同的是,符号表里记录的是变量地址,而不是变量;C语言里操作变量是直接使用变量,而不是使用地址(虽然实际上是操作变量所在地址的内容); 例如, nRecv ...原创 2018-07-17 16:00:46 · 1135 阅读 · 0 评论