小编New*_*e18的帖子

如何在x86中仅使用2个连续的leal指令将寄存器乘以37?

假设%edi包含x并且我想仅使用2个连续的leal指令结束37*x,我将如何进行此操作?

例如,你可以做到45倍

leal (%edi, %edi, 8), %edi   
leal (%edi, %edi, 4), %eax (to be returned)
Run Code Online (Sandbox Code Playgroud)

我不能为我的生活找出代替8和4的数字,以便结果(%eax)将是37x

x86 assembly x86-64 multiplication strength-reduction

5
推荐指数
1
解决办法
1302
查看次数

如何比较两个数组,看看它们是否相同?

我试图逐个元素地比较2个数组,看看它们是否相同.我可以让它适用于除len = 0之外的所有情况.我似乎无法说两个数组a = {}和b = {}是相同的.

这就是我到目前为止所拥有的

int identical( int a[], int b[], unsigned int len )
{
  int same=0;
  for( unsigned int i=0; i<len; i++ )
  {
     if(len==0)
            {
              same=1;
            }

     if (a[i]==b[i])
            {
              same=1;
            } 

             else{
                  same=0;}
   }
return same;
}
Run Code Online (Sandbox Code Playgroud)

c arrays compare

1
推荐指数
1
解决办法
1346
查看次数