C语言硬件编程
文章平均质量分 83
还在为C语言的学习而烦恼吗?还是痴痴分不清数组和指针?或许你已经可以熟练C语言,但还是会在硬件编程或工程项目中的软件BUG所困扰——别急,这个专栏专为C语言硬件编程打造,从实际应用中易出错/易忽略/易混淆的地方入手,力求深入浅出,感受C本身的灵魂与魅力。
Cerman
把c语言当做自己的兴趣爱好——之所以从事,是因为所爱。
展开
-
RISC-V指令与寄存器
在RISC-V项目调试和项目开发过程中,难免会遇到RISC-V体系结构和汇编的问题。比如笔者在利用编译生成的dump文件,对Nuclie处理器指令执行进行调试的过程中,就遇到了指令长度和指令操作的问题。转载 2021-12-19 11:05:26 · 10197 阅读 · 0 评论 -
VS常见编译选项总结
对于C语言编译器的编译选项而言,不同的编译选项,会影响C在编译阶段汇编代码的生成,以及优化过程对于汇编语言的优化,从而导致CPU在执行code时出现一定的差异。C语言的编译过程可以参见 江湖骇客 的原创博文:https://blog.csdn.net/weixin_40756041/article/details/88052207原创 2021-10-16 22:04:33 · 1796 阅读 · 0 评论 -
数组和指针的对比---指针一定效率高吗
数组和指针的对比---指针一定效率高吗前言一、指针和数组可以互换使用吗?二、指针一定比数组效率高吗?1.不加入Ox优化选项2.加入Ox优化选项总结前言在这个专栏的第一期里,笔者以实际项目中看到的一个模型,分析了指针类型对地址取值的影响。这一期,还是围绕指针这个重头戏,分析下数组和指针的异同。一、指针和数组可以互换使用吗?数组可以认为是一系列相同类型连续排列数据的集合,指针是指向一定类型数据的变量。单从定义上看,两者就不同了。参考以下2个说明:int a[5];int *b;这里,可以让原创 2021-09-12 17:34:56 · 2289 阅读 · 0 评论 -
C硬核:字符串操作总结(带Unicode和ASCII比较)
字符串操作在C编程项目和工程中是不可或缺的存在,有些情况下,我们可以很方便的使用string.h中提供的库函数,有些时候需要自行去编写。这里谈谈那些可以被使用的字符串操作库函数,并且针对常用的几种,采用UNICODE和ASCII两种源码实现展现出来。原创 2021-09-05 22:08:14 · 1286 阅读 · 0 评论 -
C硬核:聊聊预编译指令和宏的应用场景(二)
C语言硬件编程栏目往期文章:工作数年还是被指针坑了——谈谈C语言指针运算C硬核:聊聊预编译指令和宏的应用场景(一)C硬核:聊聊预编译指令和宏的应用场景(二)C语言硬件编程栏目前言一、如何方便维护那些值不变的参数?二、如何对你的printf/debug语句分级?1.定义DebugPrintErrorLevel的划分细则2.设计和Error Level相关联的print函数3. 调整宏DebugPrintErrorLevel或入口参数errorlevel三、如何批量替换一系列代码?总结前言关原创 2021-08-28 18:04:55 · 534 阅读 · 0 评论 -
C硬核:聊聊预编译指令和宏的应用场景(一)
C语言硬件编程栏目往期文章:工作数年还是被指针坑了——谈谈C语言指针运算C硬核:聊聊预编译指令和宏的应用场景C语言硬件编程栏目前言一、预编译指令#define#if#ifdef#include#pragma二、宏的应用场景编译时确定值的参数定义print error level定义函数或函数组合总结前言C语言编程中离不开预编译指令,编译器在预编译阶段,会根据预编译指令对你编写的代码进行处理。例如,我们在写第一段C程序"HelloWorld"的时候,就用到了#include指令来包含stdi原创 2021-08-22 20:09:53 · 463 阅读 · 0 评论 -
工作数年还是被指针坑了—谈谈C语言指针运算
谈谈C语言指针运算C指针:避不开的话题一个和指针类型有关的陷阱回溯指针的算数运算合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片C指针:避不开的话题指针,表征内存地址的一个变量。与其他编程语言比较,由于指针使用的灵活性和高效性,常常和C的数组/结构体一同使用,算是C语言的一个重要特点了。一个和指针类型有关的陷阱笔者在从stack中取数时,发现这样一个问题:栈底的位置位于0xFFC2_0000,栈顶的位置位于0xFFC0_0000,假设栈底12个字节的数据如下排放:|addres原创 2021-08-15 16:25:08 · 460 阅读 · 0 评论