Questions tagged «instructions»

16
是否有修改运行时代码的明智案例?
您能想到运行时代码修改(程序在运行时修改自己的代码)的任何合法(智能)用途吗? 现代操作系统似乎对执行此操作的程序不满意,因为病毒已使用此技术来避免检测。 我所能想到的就是某种运行时优化,通过在运行时知道一些在编译时无法知道的内容,可以删除或添加一些代码。

8
`testl` eax对抗eax?
我试图了解一些汇编。 汇编如下,我对这testl一行感兴趣: 000319df 8b4508 movl 0x08(%ebp), %eax 000319e2 8b4004 movl 0x04(%eax), %eax 000319e5 85c0 testl %eax, %eax 000319e7 7407 je 0x000319f0 我想了解testl介于%eax和之间的那一点%eax。我认为这段代码的具体内容并不重要,我只是想了解自身的测试-价值不总是真实的吗?

1
C代码循环性能[续]
这个问题在我的问题上继续(根据Mystical的建议): C代码循环性能 继续我的问题,当我使用打包指令而不是标量指令时,使用内在函数的代码将非常相似: for(int i=0; i<size; i+=16) { y1 = _mm_load_ps(output[i]); … y4 = _mm_load_ps(output[i+12]); for(k=0; k<ksize; k++){ for(l=0; l<ksize; l++){ w = _mm_set_ps1(weight[i+k+l]); x1 = _mm_load_ps(input[i+k+l]); y1 = _mm_add_ps(y1,_mm_mul_ps(w,x1)); … x4 = _mm_load_ps(input[i+k+l+12]); y4 = _mm_add_ps(y4,_mm_mul_ps(w,x4)); } } _mm_store_ps(&output[i],y1); … _mm_store_ps(&output[i+12],y4); } 尽管我希望它是标量版本性能的4倍,即每个周期4.1,6 = 6,4 FP ops,但该内核的测量性能约为每个周期5.6个FP操作。 考虑到权重因子的移动(感谢指出),时间表如下: 看起来时间表没有改变,尽管在操作之后还有一条额外的指令movss将标量权重值移动到XMM寄存器,然后用于shufps将该标量值复制到整个向量中。mulps考虑到从负载到浮点域的切换延迟,权重向量似乎已准备就绪,可以及时使用,因此不会引起任何额外的延迟。 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.