之前看到别的大佬分享某些汇编算法,都会用查找表方法来提升性能,他们是直接将数据表嵌入在置入代码中,一直很好奇如何实现的,也想学会这个方法,之前尝试将置入代码转汇编代码也没看明白,今天突然顿悟了,于是动手实验,果然成功了,分享记录下过程。用【斐波那契数列】来实验,这个比较简单,更容易理解。
置入代码 ({ 184, 255, 255, 255, 255, 139, 77, 8, 131, 249, 47, 119, 12, 232, 0, 0, 0, 0, 88, 141, 68, 136, 11, 139, 0, 93, 194, 4, 0 }) 置入代码 ({ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 89, 0, 0, 0, 144, 0, 0, 0, 233, 0, 0, 0, 121, 1, 0, 0, 98, 2, 0, 0, 219, 3, 0, 0, 61, 6, 0, 0, 24, 10, 0, 0, 85, 16, 0, 0, 109, 26, 0, 0, 194, 42, 0, 0, 47, 69, 0, 0, 241, 111, 0, 0, 32, 181, 0, 0, 17, 37, 1, 0, 49, 218, 1, 0, 66, 255, 2, 0, 115, 217, 4, 0, 181, 216, 7, 0, 40, 178, 12, 0, 221, 138, 20, 0, 5, 61, 33, 0, 226, 199, 53, 0, 231, 4, 87, 0, 201, 204, 140, 0, 176, 209, 227, 0, 121, 158, 112, 1, 41, 112, 84, 2, 162, 14, 197, 3, 203, 126, 25, 6, 109, 141, 222, 9, 56, 12, 248, 15, 165, 153, 214, 25, 221, 165, 206, 41, 130, 63, 165, 67, 95, 229, 115, 109, 225, 36, 25, 177 })返回 (0 )
图1:转换后看机器码长度是11,lea eax,dword [eax+ecx*4+11]
这样就行了,完了我表达不清楚了,将就看吧
|