最近の安全性試験では古典的な本「ダブルダッチの夜の読書 - 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型である要素とすることができます。
任意のエラーやご質問がある場合はタイムリーに歓迎され、私たちはライン上で、できるだけ早く返信されます。