上一页 1 2 3 4 5 6 7 8 9 ··· 25 下一页
摘要: 本文教你如何使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数。 一、概述和基础知识 在Linux下得到一个以源代码形式发布的包(一般为.tar.gz或.tar.bz2格式),我们可以用 ./confiugure、 阅读全文
posted @ 2016-11-22 21:04 orlion 阅读(2164) 评论(0) 推荐(0)
摘要: 通过Xdebug进行远程调试时,PHPSTORM等IDE会监听Xdebug设置的调试ip和端口(php.ini中配置) 下面这张截图是phpstorm开启listening for php debug connections 后: 并在当前调试的URL后面加上了XDEBUG_SESSION_STAR 阅读全文
posted @ 2016-11-11 21:50 orlion 阅读(3472) 评论(0) 推荐(0)
摘要: Shell分前后台来控制的不是进程而是作业(Job)或者进程组(Process Group)。一个前台作业可以由多个进程组成,一个后台作业也可以由多个进程组成,Shell可以同时运行一个前台作业和任意多个后台作业,这称为作业控制(Job Control)。例如用以下命令启动5个进程: 其中proc1 阅读全文
posted @ 2016-09-06 21:12 orlion 阅读(578) 评论(0) 推荐(0)
摘要: 我们实现一个简单的printf函数(可变参数) 要处理可变参数,需要用C标准库的va_list类型和va_start、va_arg、va_end宏,这些定义在stdarg.h头文件中。我们首先对照反汇编分析在调用myprintf函数时这些参数的内存布局。 myprintf函数的参数布局 这些参数是从 阅读全文
posted @ 2016-08-31 08:33 orlion 阅读(1138) 评论(0) 推荐(0)
摘要: 操作系统利用体系结构提供的VA到PA的转换机制实现虚拟内存管理。有了共享库的基础之后我们可以进一步理解虚拟内存管理了。首先分析例子: 【实际与上图存在出入,为方便下面的描述采用原书截图】 用ps命令查看当前终端下的进程,得知bash的进程id是29977,然后用cat /proc/29977/map 阅读全文
posted @ 2016-08-30 22:43 orlion 阅读(1398) 评论(0) 推荐(0)
摘要: 一、编译、链接、运行 目录结构为: |–main.c |–stack |–is_empty.c |–pop.c |–push.c |–stack.c |–stack.h 组成共享库的目标文件和一般的目标文件有所不同,在编译时要加-fPIC选项,例: 【实际以上命令在运行时并没有生成共享库,详见《链接 阅读全文
posted @ 2016-08-30 22:41 orlion 阅读(724) 评论(0) 推荐(0)
摘要: 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?以下就来解释这个问题 在《x86汇编程序基础(AT&T语法)》一文中我们汇编和链接的步骤是: 我们用gcc main.c -o main开编译一个c程序,其实际分为三个步骤:编译、汇编、链接 我们先前在《x86汇编程序基础(AT&T 阅读全文
posted @ 2016-08-30 08:22 orlion 阅读(3181) 评论(3) 推荐(1)
摘要: 以下面C程序为例: 我们在全局作用域和main函数的局部作用域各定义了一些变量,并且引入一些新的关键字const, static, register来修饰变量,那么这些变量的存储空间是怎么分配的呢?我们编译之后用readelf命令看它的符号表,了解各变量的地址分布。下面的清单中原作者把符号表按地址从 阅读全文
posted @ 2016-08-30 08:22 orlion 阅读(1065) 评论(0) 推荐(0)
摘要: 用反汇编的方法研究一下C语言的结构体: main函数中几条语句的反汇编结果如下: 从访问结构体成员的指令可以看出,结构体的四个成员在栈上是这样排列的: 虽然栈是从高地址向低地址增长的,但结构体成员也是从低地址向高地址排列的,这一点和数组类似。与数组不同的是结构体成员之间不是一个紧挨一个排列的,中间有 阅读全文
posted @ 2016-08-30 08:22 orlion 阅读(1144) 评论(0) 推荐(0)
摘要: 现在研究一下编译器优化会对生成的指令产生什么影响,在此基础上介绍C语言的volatile限定符。首先看下面的C程序: 我们用recv和send这两个全局变量来模拟设备寄存器。假设某平台采用内存映射I/O,串口发送寄存器和串口接收寄存器位于固定的内存地址,而recv和send这两个全局变量也有固定的内 阅读全文
posted @ 2016-08-30 08:22 orlion 阅读(580) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 25 下一页