
Hack
文章平均质量分 72
爱与奇迹的物语
这个世界上的另一个我
展开
-
拆一下C++ 的对象模型 (现在来看主要拆的是G++的)
1. 关于类中的成员数据和成员函数:#include using namespace std;class ClassA {public: ClassA () { } ~ClassA () { } void publicFunc () { } virt原创 2012-06-10 14:55:32 · 1615 阅读 · 0 评论 -
systemd 下的core dump(内核转储)
如果你使用systemd,那么默认情况下即使开启了转储,当程序确实core dump 的时候,你并不会在当前(包括chdir)目录下找到core(转储)文件。下面简短地说下如何在systemd 下得到core 文件。原创 2014-03-01 21:38:25 · 20276 阅读 · 0 评论 -
少年,你的一个Hello World 有多小?
起因如上……额,先把平台放一下,因为有些代码设计系统架构,如果你是x86 的架构需要自己修改代码:原创 2013-10-07 11:10:18 · 1718 阅读 · 0 评论 -
「Perl」一个brainfuck 语言解释器的混乱代码版本
RT,下面代码出自没写过几行Perl 的吾辈之手,不过效果还不错——乱的一塌糊涂。估计你已经明白为什么有“国际C语言混乱代码大赛”而没有“国际Perl语言混乱代码大赛”了=。=如果不清楚brainfuck 的解释器是什么可以看看这篇文章,这是一个相同的C++ 版本 =w=原创 2014-04-16 21:42:11 · 2593 阅读 · 1 评论 -
关于CPU加电自检的时候CS:IP 的问题
CPU加电的时候,CS被设置成F000h,于是段基址是FFFF0000h,闹不明白,查了下文档。文档上的说法应该是这样的:原创 2011-11-24 16:54:13 · 2919 阅读 · 0 评论 -
为什么两个不确定值的浮点数无法直接比较是否相等
C语言贴吧看到的:首先,为了让代码清楚一点,把楼主耍小聪明的伎俩去掉:程序运行的结果是执行了if (a != a) 语句块的内容。a = a / a 没什么好奇怪的,关于执行的结果我开始是这么认为的:a = a / a 完了之后a 的值是NaN,表示不是任何数(后来我发现,对于大多数环境来说,这个没有定死)。NaN 的32 位精度储存是这样的:原创 2012-06-07 21:48:35 · 5493 阅读 · 0 评论 -
奇怪,Linux 3.11.2-1-ARCH x86_64 居然还是可执行堆栈?
这个是系统架构,下面是测试代码「hello.c」:char shellCode[] = "\xeb\x1a\x5e\x48\x31\xff\x48\x31\xd2\x48\x31\xc0\x66\xff\xc7\xb2\x0d\xb0\x01\x0f\x05\x48\x31\xff\xb0\x3c\x0f\x05\xe8\xe1\xff\xff\xff\x48\x65\x6c\x6c\x6原创 2013-10-07 20:43:36 · 1907 阅读 · 0 评论 -
为什么操作int 类型的指令要快于操作short 的,却可能慢于操作char 的
唔,写这篇博客的原因是给人解释了半天,觉得不复制出来整理下做成一篇blog 可惜了。。。。原创 2013-12-30 22:35:35 · 3683 阅读 · 0 评论 -
关于8253 芯片计数器初值的问题
汇编接口上提到,传说Linux 0.11内核中把8253计时器设置成每隔10ms 发送一个中断,这个数字是Linux 内核的脉搏,然而在送端口40h 的时候为什么把11930 设置成初值呢?原创 2011-12-22 17:19:31 · 18250 阅读 · 2 评论 -
「C++」一个brainfuck 语言解释器
在ArchWiki 上的Arch is the best 项目上发现的brainfuck,看了看wikipedia 发现语法非常简单,于是写了一个brainfuck 的解释器。原创 2014-04-16 13:21:20 · 5369 阅读 · 1 评论 -
Binary Makeself
本文展示了Linux 系统下的二进制的Makeself 的制作:将数据和对数据的操作同时包含在一个巨大的可执行文件当中,也引出了C 代码中操作数据文件的技巧——不使用文件操作而直接使用指针来操作目标文件中的数据。原创 2015-04-25 11:57:36 · 2362 阅读 · 1 评论