菠菜

敏感而豁达

2012年10月18日

简单学习看机器码的方法

摘要: 我们知道,用C、C++、Java等高级编程语言写的程序,最终都要经过编译链接成本机可执行的程序。这个可执行程序究竟是什么呢? 在Linux上,我们可以用objdump命令很方便地查看一个可执行程序的机器码。 好,现在从一个简单的示例开始,说一说怎么理解机器码。 我们编一个简单的c程序,如下:#include <stdio.h>void f1(){ int i; for(i = 0; i < 10; i++) { printf("%d\n", i); }}int main(){ prin... 阅读全文

posted @ 2012-10-18 20:01 ~菠菜~ 阅读(17318) 评论(2) 推荐(2) 编辑

2012年9月27日

Kernel Tracing with ftrace(翻译)

摘要: This article explains how to set up ftrace and be able to understand how to trace functions. It should be useful for current kernel developers and device driver developers who want to debug kernel issues, and also for students who are keen to pursue a Linux systems programming career. 本文探索如何建立ftrac. 阅读全文

posted @ 2012-09-27 19:27 ~菠菜~ 阅读(2431) 评论(0) 推荐(0) 编辑

2012年9月20日

浮点数的误差是怎么形成的

摘要: 在这里我用下面的简单的程序一步一步说明,程序很简单,应该很容易看懂。#include <stdio.h>// 浮点数的误差是怎么形成的void main(){ double d = 1099511627775.9998779296875; printf("d = %.14f\n", d); // 问题描述:下面的数输出时并不是在编码时所给的数,有误差,是怎么形成的呢? float f = 1099511627775.9998779296875F; printf("d = %.14f\n", f); // 这是我的机子的情况 printf(&q 阅读全文

posted @ 2012-09-20 17:53 ~菠菜~ 阅读(670) 评论(0) 推荐(0) 编辑

2012年9月5日

Understanding a Kernel Oops!(翻译)

摘要: Understanding a kernel panic and doing the forensics to trace the bug is considered a hacker’s job. This is a complex task that requires sound knowledge of both the arc... 阅读全文

posted @ 2012-09-05 08:48 ~菠菜~ 阅读(1158) 评论(0) 推荐(0) 编辑

2012年8月15日

两种方法求一定范围内的所有质数

摘要: 一般来说,判断一个正整数n是不是质数,通常我们的办法是: 1 将n用2~n-1来整除,如果能被整除,则不是质数; 2 对方法1优化一下,除数上限可以由n-1缩小到n^0.5; 判断某一个数差不多用上面的方法,按现在计算机的速度,就是一眨眼的功夫就计算出来了。 现在,我们需要求2~n中所有的质数,怎么办呢? 一种比较笨的方法,也就是参考求单个质数的办法写的程序,即是让i循环取2~n的... 阅读全文

posted @ 2012-08-15 21:29 ~菠菜~ 阅读(3234) 评论(0) 推荐(0) 编辑

2012年7月23日

一种有规律多目标Makefile写法

摘要: 场景:有a.cpp b.cpp c.cpp….共计n个源文件,每个源文件要生成一个对应的名为a b c …的可执行文件。 Makefile示例: CXX = g++LIB = ../lib/source/libDs.aINCLUDE = ../lib/include/CFLAGS = -I$(INCLUDE)bins = a \ b \ call : for i in $(bins); ... 阅读全文

posted @ 2012-07-23 17:28 ~菠菜~ 阅读(845) 评论(0) 推荐(0) 编辑

2012年7月12日

趣味编程1

摘要: 不知道下面描述的问题是否有个好听的名字,所以标题不知取什么的好。 问题描述: 根据上排给出十个数,在其下排填出对应的十个数:要求下排每个数都是先前上排那十个数在下排出现的次数。 举一个例子: 数值:0,1,2,3,4,5,6,7,8,9 分配:6,2,1,0,0,0,1,0,0,0 0在下排出现了6次,1在下排出现了2次,2在下排出现了1次,3在下排出现了0次....以此类推... 阅读全文

posted @ 2012-07-12 20:46 ~菠菜~ 阅读(295) 评论(0) 推荐(0) 编辑

2012年7月8日

中国邮路问题编程求解

摘要: 中国邮路问题(Chinese Postman Problem)是一个非常经典的图论问题:一个邮递员送信,要走完他负责投递的全部街道(所有街道都是双向通行的且每条街道可以经过不止一次),完成任务后回到邮局,应按怎样的路线走,他所走的路程才会最短呢?如果将这个问题抽象成图论的语言,就是给定一个连通图,每条边的权值就是街道的长度,本问题转化为在图中求一条回路,使得回路的总权值最小。如果街道的连通图为欧拉图,则只要求出图中的一条欧拉回路即可。否则,邮递员要完成任务就必须在某些街道上重复走若干次。如果重复走一次,就加一条平行边,于是原来对应的图形就变成了多重图。只是要求加进的平行边的总权值最小就行了。于 阅读全文

posted @ 2012-07-08 23:02 ~菠菜~ 阅读(7376) 评论(6) 推荐(5) 编辑

2012年7月6日

分油问题

摘要: 问题描述: 两个小孩去打油,一人带了一个一斤的空瓶,另一个带了一个七两和一个三两的空瓶。原计划各打一斤油,可是由于所带的钱不够,只好合打了一斤油,在回家的路上,二人想平分这一斤油,可是又没有其它工具。现只用这三个瓶子(一斤、七两、三两)精确地分出两个半斤油来。 问题分析: 分油问题的初始状态可表示为(10,0,0),然后经过一系列的循环倒油,直到所求的目标状态(5,5,0)。 由于没有其它... 阅读全文

posted @ 2012-07-06 17:40 ~菠菜~ 阅读(848) 评论(0) 推荐(1) 编辑

2012年6月28日

g++使用第三方库编译时遇到的一个小问题

摘要: 假设你有程序a.cpp,要使用第三方库libS.a,第三方库提供了头文件S.h。假定S.h中定义了很多函数,任意举一个例子,声明为void M1(int &)的方法。 因为你要调用M1方法,所以你会在a.cpp中加入#include S.h这么一行。 现在编译。Makefile中大概是这样写的: a.o : a.cpp g++ -c a.cppa : a.o libS.a g++ libS.... 阅读全文

posted @ 2012-06-28 12:01 ~菠菜~ 阅读(857) 评论(0) 推荐(0) 编辑

导航