- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 ubuntu中的rsyslog
Rsyslog 是一个 syslogd 的多线程增强版,依然基于Syslog协议(linux6之前默认使用syslog程序,centos6用rsyslog所取代)完成系统日志的处理转发,官方形容它是一个极速(如火箭般快速)的日志处理系统。
2024-01-25 23:59:41
2491
原创 gcc针对部分代码取消编译优化
为了提高编译和运行速度,或者为了减少代码段大小,我们常常需要使用编译优化。默认是-O0, 我们可以修改为-O1, -O2,-Os,-O3等。但是编译优化有时候并不一定优化到最佳的效果,或者优化的结果需要某些支持才能正确执行。我曾经碰到过一个现象:在函数func1()内部定义一个数组:void func1(){ uint8_t slot_table[2][8] = {{0,4,1,5,2,6,3,7},{8,12,9,13,10,14,11,15}}; ...... uin
2020-06-29 10:12:30
7204
原创 RISC-V 使能、禁止、恢复全局中断
RISC-V的全局中断标志是在mstatus的MIE字段中。所以对全局中断进行操作时,配置MIE字段即可。禁止中断#define disable_irq() do {asm volatile ("csrr mstatus, 0x0");} while(0)使能中断:0x8表示mstatus的第3bit,即MIE字段,设置为1表示使能全局中断#define enable_irq() do {asm volatile ("csrr mstatus, 0x8");} while(0)不过这种简单粗暴
2020-06-15 15:19:30
4794
1
原创 RISC-V 不定长的指令周期
在实际cpu的运行过程中,由于CPU存在分支预测功能,beq指令的周期不是固定的。比如有8级流水的CPU,beq的指令周期有1-8个时钟周期(还是7个?目前我调试的时候发现最多的是7个)。另外,即使对于lw指令,其指令周期也不是固定的。...
2020-06-08 18:42:47
3089
4
原创 RISC-V GCC下使用inline
目前在做性能优化,就是在最短的时间内能跑完一个完整的神经网络,因此对代码的执行时间比较敏感。今天发现在头文件中定义的static inline函数,编译之后在两个源文件中分别定义了static函数,并没有实现inline该有的功能。甚至比普通的函数还差,因为同样的代码拷贝了两份,代码段变大了。于是考虑把static去掉看看,发现直接报告"undefined reference"。为了排除多文件使用的影响,写了一个inline测试函数do_something(),直接仅仅在一个c源文件(test.c)中定义和
2020-06-08 18:03:35
501
原创 python中的三个单引号
Python中的三个单引号表示多行注释,相当于C语言的/*xxxxxx*/在Python中,使用三个单引号进行多行注释,比如:'''这是多行注释,用三个单引号这是多行注释,用三个单引号 这是多行注释,用三个单引号'''print("Hello, World!")...
2019-10-11 09:48:12
5700
2
原创 Vim常用命令
一般模式下操作o: 在当前行之下新开一行,并把光标置于行首v/ctrl+v: 可以分块拷贝,列模式hjkl: 光标移动1gg: 跳到第一行的行首,即文件头2gg: 跳到第二行的行首G:跳到文件尾在某一行中跳到某列:0(数字零):行首$: 行末fx:搜索当前行中下一个出现字母x的地方。比如fb复制、粘贴:yy: 复制nyy: 复制当前行...
2019-09-26 17:44:13
145
转载 从编译原理的角度看C语言是如何转换成汇编语言的?
大家都知道计算机只能处理和识别二进制指令,而我们利用各种高级编程语言所编写的程序,要经过一些列的处理步骤,最终转变为汇编指令,再最后转变为机器指令。以上这些转变是如何发生的就属于大名鼎鼎的“编译原理”所研究的范畴,作为计算机专业学生,它的重要性毫无质疑,自然也是必修课。而我们几年所要给大家讲的是高级编程语言到汇编语言这一转变的过程,后面就以C语言为例。...
2019-09-26 17:41:48
1773
原创 对于数组名取地址
对普通变量取地址我们很熟悉,可是对于数组名取地址是个什么东西呢?数组名可是指向数组第一个元素的地址啊。前两天有个同事这么写:void func(char *name);main(){ char ifname[16] = "abcd"; func((char*)&ifname);}以前一直认为,数组名做函数参数时,被转换为指针类型,再对它取地址,那就是地
2012-02-12 23:23:10
352
原创 车祸
<br />今天早上刚出小区门就看见yuequanlu的路口处马路中间一堆垃圾,一只黑色的狗在寻找着它的食物,我还担心狗会被来车撞上。近前才发现更应该担心的不是狗,而是推垃圾车的清洁工人。一辆黑色轿车和一辆手推垃圾车停在路边,轿车发动机部位顶上布满了垃圾。电视上人被车撞了总是会翻到车顶,不知道清洁工人伤势如何。地上没有血,但愿安好。
2010-12-17 09:10:00
2622
原创 第一次使用串口
<br />今天第一次使用串口,第一次连接了连接了公司的设备,输入一些命令,看到一些结构,有点儿兴奋。虽然知道没啥的,只是万事开头难,每一步慢慢的成长都离不开同事的热情帮助!
2010-12-10 17:50:00
388
原创 昨天晚上装了一个virtualbox和一个ubuntu,感觉还不错,嘿嘿。
<br />不过电脑变慢了,因为俺的老电脑内存才1G,gg说现在老内存条老贵了,这可怎么办好呢
2010-12-10 08:51:00
324
原创 lint
<br />今天早上用lint时发现一个错误,在文件ccc中报错:函数read(int a,tu b, int c)有太多参数,错误显示read函数只有两个参数。检查了好久,read()函数的调用肯定没问题,可是就是找不出错误的原因。<br />tu结构是在文件aaa.h中定义的一个结构,read()函数是在文件bbb.h中声明,在bbb.c中定义的一个函数,然后在bbb.c中#include aaa.h。lint bbb.c时没有发现错误,但是lint ccc.c时就出错了。后来用tornado来进行编译
2010-12-07 14:20:00
316
原创 G1字节
<br />1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />REI<br />RDI<br />保留<br /> <br />备用<br /> <br /><br /><br />G1的b1—b4值的范围为0-15,而B3只能在一帧中检测出最多8个误码块,也就是说G1中b1—b4的值0-8(0b0000-0b1000)表示检测0-8个误码块,其余7个值(9-15)均被当成无误码块。<br /><br />b6、b7留作选用比特。如果不用,应将其
2010-11-15 16:46:00
563
原创 枚举数组
<br />前些天弄了个枚举数组,用turbo c 运行是没问题的,不知道用vc++怎么样。<br />挺有意思的:<br />typedef enum _c_byte<br />{<br /> C1,<br /> C2,<br /> C3,<br /> C5,<br /> C6,<br /> C7,<br /> C_BYTE_END<br />}d_byte;<br /> <br />c_byt
2010-11-15 11:16:00
826
原创 今天的收获
今天看了C语言中声明的“右左法则”,声明中的优先级,用typedef为数据类型创建别名。以前看到那些乱七八糟的声明就头疼,也记不住,都是在考试之前匆匆的再复习一下,然后上战场。现在好多了,哈哈。
2010-11-14 21:15:00
320
原创 条件编译
<br />(1)<br />#define CHINA<br /> <br />#ifdef CHINA<br /> #define BEIJING 1<br />#else<br /> #define WC 1<br />#endif<br /> <br />表示:如果前面已经定义过CHINA(可以试“#define CHINA”,也可以写为#define CHINA 0等等任何的),就编译:<br />#define BEIJING 1<br />如果没有,就编译<br
2010-11-14 15:46:00
376
原创 变量名与变量值
<br />研一时,很偶然的翻开谭浩强老先生的《C程序设计》(是师姐的书,俺的老早就卖了,估计当时觉得这本书写得不够好),很偶然的看到关于变量名的一段话:“变量名实际上是一个符号地址,在对程序编译连接时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。”<br />当时很震惊上课的时候居然没有发现这句蛮有深意的话语,可是研一的时候还是没有完全明白,只是知道有这么几个东西:变量名、内存地址、变量值。后来看到指针的地方,说到了“符号表”的这
2010-11-13 22:06:00
4775
LibSVM-2.6 程序代码注释
2009-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人