C 语言
wangy566
这个作者很懒,什么都没留下…
展开
-
container_of相关
直接看代码#include <stdio.h>#define DEFINE(sym, val) \ asm volatile("\n.ascii \"->" #sym " %0 " #val "\"" : : "i" (val))#define OFFSET(sym, str, mem) \ DEFINE(sym, offsetof(struct str, mem))#define offsetof(TYPE, MEMBER原创 2021-06-16 11:08:06 · 99 阅读 · 0 评论 -
2021-01-29
接上一篇写了个简单的程序#include <stdio.h>int main(void){ int a, c, d; a = 0x8; __asm__ __volatile__ ( "ori %0, %2, 0x7\n"// 0x7是立即数,ori指令是逻辑或,%2对应C语言的a,%0=0x8 | 0x7 ,而%0是c语言变量c "add.w %1, %2, %0\n" // 加法指令 %1 = %2 + %0 ---&g...原创 2021-01-29 15:00:32 · 105 阅读 · 0 评论 -
C语言中static变量详解
google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大。所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之。 C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者转载 2017-08-13 14:49:17 · 364 阅读 · 0 评论 -
MSB和LSB,建议先看下面(其实就是大小端的问题)
转载https://blog.csdn.net/u010893262/article/details/52875068最高有效位(MSB)指二进制中最高值的比特。在16比特的数字音频中,其第1个比特便对16bit的字的数值有最大的影响。例如,在十进制的15,389这一数字中,相当于万数那1行(1)的数字便对数值的影响最大。比较与之相反的“最低有效位”(LSB)。汇编中,比如8位2进制数...转载 2019-08-28 10:11:39 · 2095 阅读 · 0 评论 -
c语言 ++和*运算符优先级
/**左++ > * > 右++*比如 ++ *i 相当于 ++ (*i) ,指针i对应的变量+1。*实验如下*/#include <stdio.h>#include <string.h>#include <stdlib.h>int main(void){ int a[5]; int *ptr = a; ...原创 2019-09-09 16:44:52 · 1701 阅读 · 0 评论 -
全局变量、局部变量、静态变量的生存期
int x, y, z, w;void p(int *y, int x){ static int w; *y++; x++; w = x+*--y; printf("%d#%d#%d#%d#",x,*y,z,w);}int main(void){ int x, y, z, w; x=y=z=w=1; do{ static i...转载 2019-09-09 18:21:17 · 1149 阅读 · 0 评论 -
attribute 用法 section 部分
转载:http://blog.sina.com.cn/s/blog_5e11a56a0100c8h5.html###1. gcc的__attribute__编译属性要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或定义的函数或数据的特性,它有很多子项,用于改变作用对象的特性。比如对函数,no...转载 2019-09-24 14:39:11 · 465 阅读 · 0 评论