了解Assembly与C对等

时间:2019-02-02 02:16:09

标签: c assembly x86-64 code-translation

鉴于此汇编代码,我在将汇编代码转换为等效的C代码时遇到了麻烦。

 Storage::disk('s3')->get('AWS_BUCKET_PATH');

我能够推断出一些简单的空白,但是不确定如何找出其余的空白。

当前尝试:

   int main() {
      long int x=______;
      long int mask=0xff;
      int i,n,m;
      for(i=0;i<______;i++) {
         n=i;
         m=7-i;
         long int n8=n<<3;
         long int m8= m<<3;
         long int n_mask=mask<<n8;
         long int m_mask=mask<<m8;
         long int n_byte=((______>>n8) & ______;
         long int left_over = ______;
         x=left_over ______;
       }
    }

1 个答案:

答案 0 :(得分:0)

  

有麻烦搞清楚什么值被存储在哪一个寄存器,所以我可以跟踪的命令。

从循环开始。

0xff = 255,因此R9为def __init__(self, edate, fdate=""):

GCC卷扬mask进行的循环,并且不77-i / mov %r10d, %edi,所以知道在那个点m = EDI。 (这sub %edx, %edi是刚刚保持r10d,{不{1}},因为也有一个7给init另一个寄存器)

循环外唯一无法解释的变量初始化是x,因此RSI = x。

它从那里继续。从跟踪movabs,如此下去从那里。