一波三折的PAC on Mac

Apple

由于众所周知的原因,看个facebook也得架个梯子。三年前使用tor,虽然慢,但终究是个不花钱的办法,哪知后来竟然也不能用了。所幸托管网站的服务器开放了ssh,于是采用ssh转发绕过GFW。

起初我使用浏览器的插件来管理网站列表,但是从firefox到chrome,再到safari,插件虽好,但免不了每个浏览器都设置一番,耗时不说,最大的弊端是无法同步,不仅是浏览器之间,还有操作系统之间,–我要周转在Mac OS X (Lion),Debian (Squeeze),Windows (XP)之间。

PAC,全称是Proxy Auto-Config,顾名思义是指代理自动配置,由网景公司在上个世纪提出,无法明白创建者们当时的动机,但肯定不是为了方便P民们翻墙的。这项陈旧的技术达成了我的目的,–把pac文件保存在了Google Code上,将URL设置到操作系统的代理配置里,这样同步问题迎刃而解。

[ Read More » ]

读《Professional Assembly Language》之奇怪的if-then-else

Professional Assembly Language

在本书英文版第149、150页(中文版第117页),作者展示了一段稍复杂的C语言if语句,以及对应的汇编伪代码:

Instead of a single conditional jump instruction, there may be several, with each one evaluating a separate part of the if condition. For example, the C language if statment

if (eax < ebx) || (eax == ecx) then

create the following assembly language code:

if:
    cmpl %eax, %ebx
    jle else
    cmpl %eax, %ecx
    jne else
then:
    < then logic code >
    jmp end
else:
    < else logic code >  
end:

This If statement condition required two separate CMP instructions. Because the logical operator is and OR, if either CMP instruction evaluates to true, the program jumps to the else label.

[ Read More » ]

读《Professional Assembly Language》之lc消失之迷

Professional Assembly Language

上文里说到了,在x86-64的机器上,通过对as命令加入–32 参数,并在 ld 命令里加入-melf_i386参数,即可编译并链接成32-bit的cpuid。关于这两个参数的说明,可以参看man手册。

同样是在第四章节,链接c库函数,作者提供了另一个版本的cpuid,这次链接过程出现了新问题,可不是简单加入个参数就能解决的。是什么问题呢?如下:
$ as -gstabs --32 -o cpuid2.o cpuid2.s
$ ld -melf_i386 -dynamic-linker /lib/ld-linux.so.2 -o cpuid2 -lc cpuid2.o
ld: skipping incompatible /usr/lib/libc.so when searching for -lc
ld: skipping incompatible /usr/lib/libc.a when searching for -lc
ld: cannot find -lc

[ Read More » ]

读《Professional Assembly Language》之EAX消失之迷

Professional Assembly Language

CPUID的例子出现第四章,A Sample Assembly Language Program,也是全书第一个完整的代码示例,结构简单,编译和链接均正常,执行结果也符合预期。

但是,在接下来的过程中出现了问题,DEBUG是日常工作的一部分,我把它视作是显微镜。使用GDB调试,每次查看通用寄存器都看不到想要的结果,而会被告知:Value can’t be converted to integer.

同时,如果使用 info registers,则根本找不到任何eax等寄存器的踪影,取而代之的是rax等一类新面孔,如图所示。

[ Read More » ]

这个忙碌的六月

2011年的六月看不出跟往年有什么大的不一样,当然我说的是自己住的地方,没调查过降雨量和平均气温,感觉到一如既往地热辣辣,西瓜倒是比往年一斤贵了三毛钱,水价没涨,桶装水涨了两块。

去年这个时候,我还在东莞的一个镇子上,没事的时候,就观摩停在海豚湾外面的车子号牌,感叹这么多好情的人们,从四面八方赶到这旮旯,殚精竭虑地支持文化娱乐事业,感动得我都要加入到他们的队伍中去。

[ Read More » ]