例如,KLEE工作在LLVM位码上。
我们可以建立符号执行直接在C源代码?
每个LLVM IR只包含一个简单的操作,但是一个C语句可以包含多个操作。例如,a[i] = b[i];
可以拆分为:
addr = b + i; // getElementPtr instruction
tmp = *addr; // load instruction
addr1 = a + i; // getElementPtr instruction
*addr1 = tmp; // store instruction
因此处理LLVM IR比处理符号执行器的源代码要简单得多。