有一部安洁莉娜裘莉主演的动作片 SALT 正在电视上重播 原本我看到 SALT 就只会想到盐 现在又多了一个联想. 而前阵子看到的 NaCl 则是另外一个.
NaCl 的作法是采用固定长度的指令集 比方说只用 16 或 32 bits 长度的指令 不是这个长度的指令就不准用. 这样一来 短短的 b (branch) 或是其他控制流程的指令就不合 NaCl 的规则 而无法被执行. 在 CISC 指令集中只采用类似 RISC 的指令 当然会拖慢执行的效率. 不过据说影响不太大. 毕竟 Native 表示该电脑的机器码 本来就比较快.
此外 NaCl 刻意选用内存区段的方法 把 NaCl 的程式码局限在一块独立的内存中运行 就像用 Visual Studio debug code 一样 在沙盒 (or 沙盆 原文是sand box)中怎么玩 都不会影响到主内存的行为. 这也是防毒软件常用的技术 把某个有嫌疑的程式放到沙盒里面执行看看 如果它有不轨的行为 就可以判断它是病毒.
至于为何叫做 sand box 技术 令人不得不联想到猫咪. 猫咪只会在沙盆里面便便 具有隔离的效果 哈!
