2017-02-11 qqq
PIC代码之移位 对编译器已经生成的PIC代码进行混淆,其实还是很有意思的。关于什么是PIC代码可以看这里。我用ARM架构的thumb指令集来举例子。PIC代码与普通代码不同的地方在于,其代码中有很多是相对寻址。比如: 0x00 ldr r1, [pc, #4] ① ... 0x08 .word 0x0001 ② 上面的代码①和②之间的距离必须是固定的8byte,因为语句①使用了pc做相对寻址,所以两条语句的相对位置一旦改变会导致语句①无法拿到语句②位置的常数1。 对于这种pc相关的代码,我们只要做相应的处理就可以。比如ldr指令,如果用pc相对寻址 继续阅读 »
2017-01-14 qqq
写代码的正确姿势 需要一个合适的键盘,这里未必要那种上千元的机械键盘,只要用着顺手就行了。以前我玩吉他的时候圈子里就流传着一句话:技术不足,设备来补。要知道,好的乐器和音响或许还真能弥补一些演奏效果的缺陷,不过换做写程序,恐怕不行。我个人现在除了笔记本的键盘外,台式机还用着60块买的联想标配键盘,没感觉有什么不舒服。 让程序员们一直争论不休的应该是编辑器的选择。vim, emacs, vscode... 这里编辑器真的也没有绝对的好坏,哪个用着顺手用哪个就行了。不过编辑器毕竟是编辑器,任何企图将编辑器变成IDE的做法都是在找麻烦。 IDE相对于编辑器,提供了更多的功能。比如即时语法检查, 继续阅读 »