<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[smallgeneral的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/smallgeneral</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; smallgeneral]]></copyright><item><title><![CDATA[面试题]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6436944</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6436944</guid><author>smallgeneral</author><pubDate>Sat, 21 May 2011 20:06:00 +0800</pubDate><description><![CDATA[<br />今天笔试题中有几道移位操作的题，印象比较深刻。<br />8 位二进制数按位进行反转(需要用最短的代码实现)：当是是没做出来了啊！<br />后来上网查了一下发现可以这样来做；<br />首先需要采用有分治的思想 现将字符串的4位进行反转，然后在分别的4为内俩位进行反转，然后奇偶位进行反转。<br />例子<br />0101 1100-> 1100 0101--------->0011 0101-------->0011 0101 DONE!!<br />把这个过程反过来也是一样的。<br /]]></description><category></category></item><item><title><![CDATA[make 中的config详述]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6403530</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6403530</guid><author>smallgeneral</author><pubDate>Sun, 08 May 2011 15:15:00 +0800</pubDate><description><![CDATA[<br />help:<br /> @echo  '  config   - Update current config utilising a line-oriented program'<br /> @echo  '  menuconfig   - Update current config utilising a menu based program'<br /> @echo  '  xconfig   - Update current config utilising a QT based fron]]></description><category></category></item><item><title><![CDATA[内联汇编]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6400778</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6400778</guid><author>smallgeneral</author><pubDate>Fri, 06 May 2011 20:22:00 +0800</pubDate><description><![CDATA[我爱南开站 -- ziyuan的个人文集 
发信人: Thunder (小正哥), 信区: LinuxDev
标  题: Linux 中 x86 的内联汇编 ZZ
发信站: 我爱南开站 (2004年02月23日01:39:24 星期一), 站内信件

http://www-900.ibm.com/developerWorks/cn/linux/sdk/assemble/inline/index.shtml
 
 
Linux 中 x86 的内联汇编
将各个部分组合起来 
Bharata ]]></description><category></category></item><item><title><![CDATA[jmp指令]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6314473</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6314473</guid><author>smallgeneral</author><pubDate>Mon, 11 Apr 2011 00:59:00 +0800</pubDate><description><![CDATA[最近看链接器源码中，对位置无关代码PIC（共享库）的链接问题，发现对call和jmp很多不常用的用法，这里试验并总结了一下各种用法。<br />我们最常用的jmp形式，就是 jmp后面跟个标签！这个没什么可说的！ 假如标签叫做mylabel，它的地址是0x8048377，而且有个全局变量b，b存储的内容就是mylabel的地址，而b的地址是0x80494A8。即有这样的赋值（加载）语句：movl$mylabel,%eax//把mylabel的地址加载到eax寄存器中<br />movl%eax,b//把my]]></description><category></category></item><item><title><![CDATA[内核的创建流程与代码分析]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6313640</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6313640</guid><author>smallgeneral</author><pubDate>Sun, 10 Apr 2011 16:07:00 +0800</pubDate><description><![CDATA[<br />1.    顶层Makefile分析<br />核心代码：<br />all: vmlinux<br />vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o $(kallsyms.o) FORCE<br /># vmlinux is built from the objects selected by $(vmlinux-init) and(vmlinux-main)<br />vmlinux-init := $(h]]></description><category></category></item><item><title><![CDATA[AT&T语法]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6307704</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6307704</guid><author>smallgeneral</author><pubDate>Thu, 07 Apr 2011 18:42:00 +0800</pubDate><description><![CDATA[<br />.6.2 AT&T汇编语言的相关知识<br />   在Linux源代码中，以.S为扩展名的文件是“纯”汇编语言的文件。这里，我们结合具体的例子再介绍一些AT&T汇编语言的相关知识。<br />   1．GNU汇编程序GAS（GNU Assembly和连接程序<br />当你编写了一个程序后，就需要对其进行汇编（assembly）和连接。在Linux下有两种方式，一种是使用汇编程序GAS和连接程序ld，一种是使用gcc。我们先来看一下GAS和ld:<br />GAS把汇编语言源文件（.o）转换为]]></description><category></category></item><item><title><![CDATA[深入浅出大端小端]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6262565</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6262565</guid><author>smallgeneral</author><pubDate>Sun, 20 Mar 2011 12:41:00 +0800</pubDate><description><![CDATA[<br />文章一： <br />端模式（Endian）的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类，从圆头开始将鸡蛋敲开的人被归为Big Endian，从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头（Big-Endian）敲开还是从小头（Little-Endian）敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。在计算机业界，Endian表示数据在存储器]]></description><category></category></item><item><title><![CDATA[深入浅出大端小端]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6262564</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6262564</guid><author>smallgeneral</author><pubDate>Sun, 20 Mar 2011 12:41:00 +0800</pubDate><description><![CDATA[<br />文章一： <br />端模式（Endian）的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类，从圆头开始将鸡蛋敲开的人被归为Big Endian，从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头（Big-Endian）敲开还是从小头（Little-Endian）敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。在计算机业界，Endian表示数据在存储器]]></description><category></category></item><item><title><![CDATA[IAP与ISP的异同]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6210373</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6210373</guid><author>smallgeneral</author><pubDate>Sat, 26 Feb 2011 21:25:00 +0800</pubDate><description><![CDATA[<br />ISP： 一种无需将存储芯片（如EPROM）从嵌入式设备上取出就能对其进行编程的过程，缩略为ISP。在系统编程需要在目标板上有额外的电路完成编程任务。其优点是，即使器件焊接在电路板上，仍可对其（重新）进行编程。在线系统可编程是Flash存储器的固有特性（通常无需额外的电路），Flash几乎都采用这种方式编程。 <br />优点：<br />　 ISP技术的优势是不需要编程器就可以进行单片机的实验和开发，单片机芯片可以直接焊接到电路板上，调试结束即成成品，免去了调试时由于频繁地插入取出芯片对芯片和]]></description><category></category></item><item><title><![CDATA[LPC2103 ISP烧写]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6209673</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6209673</guid><author>smallgeneral</author><pubDate>Sat, 26 Feb 2011 14:45:00 +0800</pubDate><description><![CDATA[    放假前，朋友借我一块EasyArm开发平台，甚是欢喜啊，以为终于可以自己开发点东西玩玩了。谁知道没有JTAG，与串口。然后我问他要JTAG，他说没JTAG照样可以用。串口还好解决我去电子市场买了一个串口。放假在家准备开发一个程序玩玩的时候，看教程都是JTAG下载程序的。当我尝试用光碟中带的flash 烧写软件进行烧写的时候怎么也不出结果，那个郁闷啊！后来那块板子就凉家里没动弹，来学校后我找我同学跟他说没JTAG就是不行。他说板子也是朋友送他的，朋友说可以。然后让我调调。凭着对嵌入式的热爱。我再次拿起]]></description><category></category></item><item><title><![CDATA[U盘]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6208370</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6208370</guid><author>smallgeneral</author><pubDate>Fri, 25 Feb 2011 18:50:00 +0800</pubDate><description><![CDATA[文章内容摘取之：http://forum.eet-cn.com/BLOG_ARTICLE_6610.HTMU盘是大家最熟悉不过的存储载体了。几乎我们每一天的生活都离不开它。它的便携性，即插即用特性，还有大容量，不错的读写速度是它成功的关键。可以你了解它背后的故事吗？  U盘的诞生：        U盘的全称是USB Disk。它很年轻，但成长却最快，故事也很多，大部分鲜为人知。1997年，随着Intel在主板芯片组方面对USB支持的不断加强，大量外设开始采用USB接口。于是，一种针对USB的移动存储应运而生]]></description><category></category></item><item><title><![CDATA[Nor flash与Nand flash]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6207500</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6207500</guid><author>smallgeneral</author><pubDate>Fri, 25 Feb 2011 13:51:00 +0800</pubDate><description><![CDATA[NOR FLASH/NAND FLASH 是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR Flash 技术，彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着，1989年，东芝公司发表了NAND Flash 结构，强调降低每比特的成本，有更高的性能，并且像磁盘一样可以通过接口轻松升级。NOR Flash 的特点是芯片内执行（XIP ，eXecute In Place），这样应用程序可以直接在Flash闪存内运行，不必再把代码读到系统RAM中。NOR 的传输效率很高，]]></description><category></category></item><item><title><![CDATA[EEPROM与EPROM]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/6207407</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/6207407</guid><author>smallgeneral</author><pubDate>Fri, 25 Feb 2011 13:22:00 +0800</pubDate><description><![CDATA[<br />EPROM就是Erasable Programmable Read Only Memory，<br />中文含意为“可擦除可编程只读存储器”。它是一种可重写的存储器芯片，并且其内容在掉电的时候也不会丢失。换句话说，它是非易失性的。它通过EPROM编程器进行编程，EPROM编程器能够提供比正常工作电压更高的电压对EPROM编程。一旦经过编程，EPROM只有在强紫外线的照射下才能够进行擦除。为了进行擦除，EPROM的陶瓷封装上具有一个小的石英窗口，这个石英窗口一般情况下使用不透明的粘带覆盖，当擦除时]]></description><category></category></item><item><title><![CDATA[arm指令]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/5958818</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/5958818</guid><author>smallgeneral</author><pubDate>Fri, 22 Oct 2010 13:53:00 +0800</pubDate><description><![CDATA[ARM是RISC结构，数据从内存到CPU之间的移动只能通过L/S指令来完成，也就是ldr/str指令。
比如想把数据从内存中某处读取到寄存器中，只能使用ldr
比如：
ldr r0, 0x12345678
就是把0x12345678这个地址中的值存放到r0中。
而mov不能干这个活，mov只能在寄存器之间移动数据，或者把立即数移动到寄存器中，这个和x86这种CISC架构的芯片区别最大的地方。
x86中没有ldr这种指令，因为x86的mov指令可以将数据从内存中移动到寄存器中。

另外还有一个]]></description><category></category></item><item><title><![CDATA[volatile 关键字]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/5957303</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/5957303</guid><author>smallgeneral</author><pubDate>Thu, 21 Oct 2010 19:20:00 +0800</pubDate><description><![CDATA[用volatile关键字定义变量，相当于告诉编译器，这个变量的值会随时发生变化，每次使用时都需要去内存里重新读取它的值，并不要随意针对它作优化。

不使用volatile定义的变量，可能因为编译器优化而出现一些问题，具体可以看给出的参考资料，里面有一个例子。

建议使用volatile变量的场所：
(1) 并行设备的硬件寄存器
(2) 一个中断服务子程序中会访问到的非自动变量（全局变量）
(3) 多线程应用中被几个任务共享的变量 <br /><br />]]></description><category></category></item><item><title><![CDATA[全排列算法的理解]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/5954972</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/5954972</guid><author>smallgeneral</author><pubDate>Wed, 20 Oct 2010 20:09:00 +0800</pubDate><description><![CDATA[<br />（1）序数法：<br />　　　因为： （２）字典序法：<br />n!=((n-1)+1)(n-1)!=(n-1)(n-1)!+(n-1)!,<br />同理，<br />(n-1)!=(n-2)(n-2)!+(n-2)!,<br />…,<br />故n!= (n-1)(n-1)!+ (n-2)(n-2)!+…+2*2!+2!<br />不难证明，从0到n!-1的任何数m可唯一的表示为m=an-1(n-1)!+ an-2(n-2)!+…+a11!, 其中<br />0< ai< i. <br]]></description><category></category></item><item><title><![CDATA[全排列算法的理解]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/5954971</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/5954971</guid><author>smallgeneral</author><pubDate>Wed, 20 Oct 2010 20:09:00 +0800</pubDate><description><![CDATA[（1）序数法：　　　因为： （２）字典序法：n!=((n-1)+1)(n-1)!=(n-1)(n-1)!+(n-1)!,同理，(n-1)!=(n-2)(n-2)!+(n-2)!,…,故n!= (n-1)(n-1)!+ (n-2)(n-2)!+…+2*2!+2!不难证明，从0到n!-1的任何数m可唯一的表示为m=an-1(n-1)!+ an-2(n-2)!+…+a11!, 其中0生成给定全排列的下一个排列所谓一个的下一个就是这一个与下一个之间没有其他的。这就要求这一个与下一个有尽可能长的共同前缀，也即变化限制]]></description><category></category></item><item><title><![CDATA[Intel CPU型号发展史]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/5923556</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/5923556</guid><author>smallgeneral</author><pubDate>Wed, 06 Oct 2010 12:01:00 +0800</pubDate><description><![CDATA[<br />Intel CPU的各种型号简介 个人电脑使用的CPU以Intel品牌为主， PC机CPU发展的历史就等于Intel公司的历史，现在就Intel公司CPU的发展作一介绍。 Intel CPU型号发展： <br />4004<br />Intel 8008    <br />Intel 8080<br />Intel 8085<br />Intel 8086<br />Intel 8088<br />Intel 80186<br />Intel 80188<br />Intel 80286<br ]]></description><category></category></item><item><title><![CDATA[MFC中VERIFY与ASSERT的区别]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/5618933</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/5618933</guid><author>smallgeneral</author><pubDate>Mon, 24 May 2010 00:37:00 +0800</pubDate><description><![CDATA[VERIFY   与ASSERT用在程序调试上并无本质上的区别。     In   the   debug   version   of   MFC,   the   VERIFY   macro   evaluates   its   argument.   If   the   result   is   0,       the   macro   prints   a   diagnost]]></description><category></category></item><item><title><![CDATA[#include使用]]></title><link>https://blog.youkuaiyun.com/smallgeneral/article/details/5597653</link><guid>https://blog.youkuaiyun.com/smallgeneral/article/details/5597653</guid><author>smallgeneral</author><pubDate>Sun, 16 May 2010 16:05:00 +0800</pubDate><description><![CDATA[include   ""是先从本地目录开始寻找，然后去寻找系统路径     而Include   ]]></description><category></category></item></channel></rss>