「ダブルダッチ夜の読書 - アセンブリ言語からWindowsカーネルのプログラミングへの」抗C 3.3アセンブラ言語の練習の回答

最近の安全性試験では古典的な本「ダブルダッチの夜の読書 - Windowsカーネルプログラミングにアセンブリ言語から」とは、オンラインの答えにはほとんど言及を見つけ、そこに答えの重大なエラー部分は明らかであるので、この記事を書きます。

次のようにアセンブリコードブックを考えます:

 

著者自身のアイデアや理解は、次のCコードを復元ブックによると:

INT MyFunctionを(INT A []、INT [] B、ダブル C []、int型D)
{ 
    int型 I = 0 
    
    実行
    { 
        C [i]は [iが* = 2 + 1 ] * B [ 2 ] + [i *が2 ] * B [ 0 ]。
        C [iが + 1 ] [iが* = 2 + 1 ] * B [ 3 ] + [i *が2 ] * B [ 1 ]。
        D + = C [I] + C [I + 1 ]。
    } ながら(iは<2);     // ここでトランスデューサはループも可能である
    
    D + = RAND(); 
    
    スイッチ(D)
    { 
        ケース 100 
            のprintf(" CNTは100 " );
         ケース 110 
            のprintf(" CNT 110 IS " );
             BREAK ;
         デフォルト
            のprintf(" なし" ); 
    } 
    
    戻りD; 
}

cが長い場所を考えるために、配列の著者である場合には、本の分析によって提供さ答えを循環させるために、我々は第二サイクル(すなわち、iは1さ)cは、[1]再割り当てし、Cのそれぞれの完全なサイクルを見ることができます8つのアドレスcがint型の配列である場合、C言語ではないので、追加される[1]第二サイクルは、4バイトのint型空間として再割り当て、プラス8 Cジャンプ8 /のアドレスに等しい場合4 = 2インデックスは、それがCである、[2]の代わりに、C [1]割り当て。Cは、8バイトのデータ型、double型である要素とすることができます。

 

任意のエラーやご質問がある場合はタイムリーに歓迎され、私たちはライン上で、できるだけ早く返信されます。

おすすめ

転載: www.cnblogs.com/dubh3/p/11784631.html