博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Linux

摘要:在Linux下编写C程序的时候,总是看见 #include <sys/types.h> 这样的引用。那么sys/types.h在哪里呢? 一般在/usr/include这个目录下。这是gcc的默认头文件目录 阅读全文

posted @ 2011-04-07 09:36 天地玄黄 阅读(6630) 评论(0) 推荐(0)

摘要:在Linux中,gcc更像一个工具大管家,管理很多工具一起来对C程序进行编译。详细过程请看下图,带阴影的箭头表示文件的流程,空白箭头表示控制过程: 下面详细介绍一下这个过程。 1、程序员在Linux终端中输入命令gcc eatc.c –o eatc 2、gcc接管Linux的控制权,然后立即启用一个工具C preprocessor(cpp)。这个工具处理C语言的源代码文件(eatc.c),处理比... 阅读全文

posted @ 2011-03-30 21:25 天地玄黄 阅读(4737) 评论(0) 推荐(0)

摘要:当Linux把程序加载到内存中的时候,Stack中是存储有一些预先的信息的。 Stack存在于内存中0xbfffffff附近,但是不会大于这个值。Stack是底朝上的,ESP指向最外面的元素。 · ESP所指向的最外面的元素是这个程序的参数个数,最少为1。比如运行./test这个程序,这唯一一个参数指的就是test。这是32bits的。 · 之上一行是一个地址,指向可执行的文件。也是32bits的... 阅读全文

posted @ 2011-03-30 14:12 天地玄黄 阅读(255) 评论(0) 推荐(0)

摘要:文件描述符和系统调用号。 File Descriptor文件描述符:0:Standard Input 1: Standard Output 2: Standard Error 系统调用号: 0: 1:sys_exit 2: 3:sys_read 4:sys_write 阅读全文

posted @ 2011-03-27 14:26 天地玄黄 阅读(216) 评论(0) 推荐(0)

摘要:我们在写一个二进制数时,一般高位在左,低位在右: 阅读全文

posted @ 2011-03-22 08:35 天地玄黄 阅读(260) 评论(0) 推荐(0)

摘要:sys_read: mov eax,3 ;sys_read的系统调用号 mov ebx,0 ;设置标准输入: Standard Input mov ecx.Buff mov edx,BUFFLEN int 80h sys_write: mov eax,4 ;sys_write的系统调用号 mov ebx,1 ;设置标准输出:Standard output mov ecx,Buff mov edx,... 阅读全文

posted @ 2011-03-21 22:06 天地玄黄 阅读(412) 评论(0) 推荐(0)

摘要:Linux中,Stack是一种数据的操作方式,对内存中的数据进行操作。 stack是倒置的,从上往下长。 在C语言中,动态内存分配(malloc)是在heap中进行的。汇编中的动态分配本书没有涉及。 当stack和下面的代码部分发生冲撞时,Linux会产生"segmentation fault”,并终止程序。 stack的大小并不一定与.text .data的大小成比例。 当程序开始运行时,sta... 阅读全文

posted @ 2011-03-18 14:50 天地玄黄 阅读(376) 评论(0) 推荐(0)

摘要:Put the least significant byte into the lowest address. 比如: mov eax, ‘WXYZ’ 在寄存器eax中的值为0x5a595857 其中W、X、Y、Z的十六进制数值分别为57h、58h、59h、5ah。 在一个寄存器中,右端是低位,左端是高位。所以把先来的字符放在低位。 这里的WXYZ也可以看做是char ch[4] = ‘WXYZ’... 阅读全文

posted @ 2011-03-15 15:44 天地玄黄 阅读(590) 评论(0) 推荐(0)

摘要:我用Xmanager 3远程连接到Ubuntu 10.10上,一切正常。但是我在终端中输入字母d的时候,整个窗口就会变小。原因是Ubuntu自设的快捷键在作怪。选择 系统>首选项>键盘快捷键,找到“隐藏所有正常窗口并将桌面设置为焦点”,可以看到它的快捷方式为D。只要把它改为Alt+D就可以了。 阅读全文

posted @ 2011-03-14 13:43 天地玄黄 阅读(1716) 评论(0) 推荐(0)

摘要:1、现代的计算机体系结构中的两个主要部分是CPU和内存。内存中保存数据和指令,CPU从内存中取指令执行。有些指令让CPU做运算,有些指令让CPU读写内存中的数据。这一部分要详细了解的话就要对汇编语言比较清楚。 2、每个内存(memory)单元有一个地址。每个内存单元的大小为1Byte。内存地址是从0开始编号的整数。 3、CPU只做两件事:1. 从内存中取指令 2. 解释执行这条指令。 这两件事情周... 阅读全文

posted @ 2011-01-10 22:11 天地玄黄 阅读(361) 评论(0) 推荐(0)

摘要:在Linux下实现了一个归并排序的算法,分成多个文件,这里记录三点:归并排序的算法、makefile的使用、gdb调试心得 一、归并排序算法 算法的递推关系:一个大的数列需要排序,把它从中间分成两部分,每一部分归并排序,然后把排好序的这两个部分再合并起来(合并的时候要按顺序合并)。 算法的Base Case:如果分成的这部分只有一个数,那么这个部分就不用再排序(看做已经排好序的)。 实现这个算法用了三个函数,每个函数在一个文件中,分别为:merge.c sort.c 和 main.c,其中merge.c实现的是合并的方法,sort.c实现的是排序的方法,main.c是一个测试实例。还有三 阅读全文

posted @ 2011-01-08 22:04 天地玄黄 阅读(17348) 评论(0) 推荐(0)

摘要:事故描述: 实验室中一台电脑装Ubuntu,用另一台xp电脑远程连接Ubuntu。可是今天网络掉了好几次,Linux的机器根本无法上网。 原因: 实验室中有一台交换机,不是我Linux电脑的问题,是交换机的问题。 判断依据: 最后感觉是交换机有问题,就去把交换机上的我的电脑的网线拔下来又插上。结果不小心把交换机重启了。之后就好了。 阅读全文

posted @ 2011-01-07 21:16 天地玄黄 阅读(2780) 评论(0) 推荐(0)

摘要:比较简单的方法就是使用time命令: 阅读全文

posted @ 2011-01-07 16:17 天地玄黄 阅读(786) 评论(0) 推荐(0)

摘要:百度有一个这个系列的文章,这里先记一下。作者貌似也是浙大的某位学长,就是不知是那一年的。其博客首页为:http://hi.baidu.com/wg_wang/blog 原文网址: 用GDB调试程序(1)──概述 用GDB调试程序(2)──调试示例 用GDB调试程序(3)──使用GDB 用GDB调试程序(4)──命令 用GDB调试程序(5)──使用gdb 用GDB调试程序(6)──暂停点 用GDB调试程序(7)──暂停点(续) 用GDB调试程序(8)──查看栈信息 用GDB调试程序(9)──查看源程序 用GDB调试程序(10)──查看运行时数据(1) 用GDB调试程序(11)──查看运行时数据( 阅读全文

posted @ 2011-01-07 15:03 天地玄黄 阅读(257) 评论(0) 推荐(0)

摘要:可以用下面的方法来显示数组 其中p相当于print,array就是数组首地址,也可以是数组名,len是想要显示的数组的长度。比如我有一个数组的定义那么想要显示的时候就可以写:这样就会显示数组a中的所有元素。也可以使用display在一部调试的时候都显示:取消显示就用undisplay,不过这时候要写显示的号码。 阅读全文

posted @ 2011-01-07 14:35 天地玄黄 阅读(19369) 评论(1) 推荐(5)

摘要:原文网址:http://syre.blogbus.com/logs/10431681.html 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://syre.blogbus.com/logs/10431681.html 原来在putty上用vi的时候,开NumLock时按小键盘上的数字键并不能输入数字,而是出现一个字母然后换行(实际上是命令模式上对应上下左右的键)。输... 阅读全文

posted @ 2011-01-07 14:18 天地玄黄 阅读(453) 评论(0) 推荐(0)