<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[robin of compiler ]]></title><description><![CDATA[有锋才有攻击力！！（人生辩证法：厚重，刀锋，网络）]]></description><link>https://blog.youkuaiyun.com/linux510zcf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; linux510zcf]]></copyright><item><title><![CDATA[完整的内存使用]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/5828389</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/5828389</guid><author>linux510zcf</author><pubDate>Sat, 21 Aug 2010 11:50:00 +0800</pubDate><description><![CDATA[<br />内存分配方式有三种： <br />（1） 从静态存储区域分配。内存在程序编译的时候就已经分配好，这块内存在程序的<br />          整个运行期间都存在。例如全局变量，static 变量。 <br />（2） 在栈上创建。在执行函数时，函数内局部变量的存储单元都可以在栈上创建，函<br />          数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集<br />          中，效率很高，但是分配的内存容量有限。 <br />（3） 从堆上分配，亦称]]></description><category></category></item><item><title><![CDATA[程序加载读书笔记]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/5828096</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/5828096</guid><author>linux510zcf</author><pubDate>Sat, 21 Aug 2010 09:11:00 +0800</pubDate><description><![CDATA[<br />加载概念和方法<br /> <br />1．加载的概念<br />加载是将一个程序放到主存（RAM）里使其能运行的过程。链接加载器（本文中涉及的）和单纯的加载器没有什么太大的区别，主要和最明显的区别是在于前者的输出放在内存而不是在文件中。<br /> <br />2、带有虚拟内存加载步骤：<br />从目标文件读入足够的头部信息，找出需要多少地址空间。<br />分配地址空间，如果目标代码的格式具有独立的段，那么就将地址空间按独立的段划分。<br />将程序读入地址空间的段中。<br />将bs]]></description><category></category></item><item><title><![CDATA[第一份工作]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/5058161</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/5058161</guid><author>linux510zcf</author><pubDate>Tue, 22 Dec 2009 21:57:00 +0800</pubDate><description><![CDATA[第一份工作，算是比较传奇。自己本着经验不足，找个工作进阶的心态，却找了一份国内鲜有研究的工作领域——编译器我现在对他的理解只是：这是一个类似以GUN的GCC的编译器，具体来讲，我一概不知。套用PM的一句话就是，我现在是一张白纸，我所要做的就是尽情书写。      第一天，也就是12月21日。早上早早来到公司却被HR告知我现在要做的就是等待，因为我们的身份还在进行电子流申请，说实话，我不知道]]></description><category></category></item><item><title><![CDATA[嵌入式软件工程师十大秘诀！ [转]]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/5013877</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/5013877</guid><author>linux510zcf</author><pubDate>Tue, 15 Dec 2009 20:02:00 +0800</pubDate><description><![CDATA[1.懂得使用工具　　2.尽早发现内存问题　　3.深入理解代码优化　　4.不要让自己大海捞针　　5.重现并隔离问题　　6.以退为进　　7.确定测试的完整性　　8.提高代码质量意味着节省时间　　9.发现它，分析它，解决它　　10.利用初学者的思维　　这十条秘诀在业界广为流传，使很多人受益。本文围绕这十条秘诀展开论述。　　1.懂得使用工具　　通常嵌入式系统对可靠性的要求比较高。嵌入式系统安全性的失效可能]]></description><category></category></item><item><title><![CDATA[函数宏的优缺点]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4788972</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4788972</guid><author>linux510zcf</author><pubDate>Mon, 09 Nov 2009 11:25:00 +0800</pubDate><description><![CDATA[         老的C语言程序员中有一种倾向，就是把很短的执行频繁的计算写成宏，而不是定义为函数。完成I / O的g e t c h a r，做字符测试的i s d i g i t都是得到官方认可的例子。人们这样做最根本的理由就是执行效率：宏可以避免函数调用的开销。实际上，即使是在C语言刚诞生时(那时的机器非常慢，函数调用的开销也特别大)，这个论据也是很脆弱的，到今天它就更无足轻重了。有了新型的]]></description><category></category></item><item><title><![CDATA[字符常量的类型]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4744037</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4744037</guid><author>linux510zcf</author><pubDate>Thu, 29 Oct 2009 17:03:00 +0800</pubDate><description><![CDATA[ C 使用 int 类型来处理字符常量，而不是 char 类型。例如，在使用32位 int 的ASCII 系统中，以下代码                char ch = C; C 的编码值 67 被存储于 32 位的内存单元中；不过 ch 仍然存储于 8 位的内存单元中，只是它的值变成了 67。因此，我们可以定义形如 good 的古怪字符常量。因为每个字符的编码值占]]></description><category></category></item><item><title><![CDATA[C/C++ 下标有效性检查]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4741356</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4741356</guid><author>linux510zcf</author><pubDate>Thu, 29 Oct 2009 09:39:00 +0800</pubDate><description><![CDATA[C/C++是不检查数组下标是否越界的。      不检查下标是否越界可以有效提高程序运行的效率，因为如果你检查，那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界，这就会导致程序的运行速度下降，所以为了程序的运行效率，C/C++才不检查下标是否越界。      C/C++如果数组下标越界了，那么它会自动接着那块内存往后写。想了一下明白了，以前说不允许数组下标越界，]]></description><category></category></item><item><title><![CDATA[嵌入式系统中断服务子程序(ISR)]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4712430</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4712430</guid><author>linux510zcf</author><pubDate>Thu, 22 Oct 2009 11:22:00 +0800</pubDate><description><![CDATA[中断是嵌入式系统中重要的组成部分，这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是，产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR)，请评论一下这段代码的。 __interrupt double compute_area (double radius) { double area = PI *]]></description><category></category></item><item><title><![CDATA[【转] 嵌入式驱动开发]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4699182</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4699182</guid><author>linux510zcf</author><pubDate>Mon, 19 Oct 2009 16:44:00 +0800</pubDate><description><![CDATA[2.4内核注册驱动要用：int register_chrdev (unsigned int major, const char *name, struct file_operations *fops);2.4内核注销驱动要用：int unregister_chrdev( unsigned int major, const char *name );2.4内核驱动注册完后，要用以下代码创建设备文件 ]]></description><category></category></item><item><title><![CDATA[基于x86的madplayer移植构建脚本]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4668371</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4668371</guid><author>linux510zcf</author><pubDate>Wed, 14 Oct 2009 11:08:00 +0800</pubDate><description><![CDATA[#!/bin/bash#基于x86平台的madplayer移植脚本MADPLAY_DIR=/opt/zcfprg/madplayerSRC_DIR=src-x86TARGET_DIR=$MADPLAY_DIR/target-x86tar -xvzf $MADPLAY_DIR/tarball/madplay-0.15.2b.tar.gz   -C $SRC_DIRtar -xvzf $M]]></description><category></category></item><item><title><![CDATA[Linux源码安装过程中选项—prefix的作用(转)]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4668035</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4668035</guid><author>linux510zcf</author><pubDate>Wed, 14 Oct 2009 10:24:00 +0800</pubDate><description><![CDATA[         在linux和unix环境中，源码安装是最常用的软件安装方式，一些软件除了提供源码外，也提供各种发行版的二进制安装包（如基于redhat包管理工具的rpm包），但强烈建议使用源码安装方式。原因是：（1）没有类似rpm那样让人恼火的包依赖关系，（2）源码安装灵活自由，适用于不同的平台，维护也十分方便。         源码的安装一般由3个步骤组成：配置（configure）、编]]></description><category></category></item><item><title><![CDATA[数据类型转换（代码总结）]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4664072</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4664072</guid><author>linux510zcf</author><pubDate>Tue, 13 Oct 2009 15:21:00 +0800</pubDate><description><![CDATA[1、字符串转16进制字符 long atox( char *buffer){        long v=0;                while(*buffer)        {                v*=16;                if(*buffer>=0 && *buffer                       v+= *buffer - ]]></description><category></category></item><item><title><![CDATA[获取当前系统的大小端模式小代码]]></title><link>https://blog.youkuaiyun.com/linux510zcf/article/details/4657325</link><guid>https://blog.youkuaiyun.com/linux510zcf/article/details/4657325</guid><author>linux510zcf</author><pubDate>Mon, 12 Oct 2009 10:54:00 +0800</pubDate><description><![CDATA[/**************endian_status.c*****************/#include int main(int argc, char *argv[]){   int c = 1;   if ((*(char *)&c) == 1)     {     printf("little endian/n");   }   else     printf("]]></description><category></category></item></channel></rss>