<< VC++でバッファオーバーフロー実験 | top | 基本情報受けてきた >>

スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | | - | - |

コンパイラによる最適化

 コンパイラによる最適化で思ったようにクラック出来なかった原因を探るため、

次のようなコードを書いてみた。

#include <stdio.h>
#include <string.h>

int main()
{
    int i = 256;
    int j = 1024;
   
    return 0;
}

VC++でコンパイルし、出力されたアセンブリコードを見てみる。

最初は最適化オプションオフ。



教科書どおりだ。

次に最適化オン。



i=256などとしても以後使用されないので領域確保しても無駄である。

なので変数の代入はおろか、領域確保さえ行われない。

昨日書いたコードが最適化によってうまく動かなかったのはこういう事情があったようだ。

コンパイル時点で変数の要不要が判断できないようなプログラムを書けばいいかな、と思ったがそれだけではだめなようだ。

ローカル変数の格納場所が教科書どおりではないかも。

ゆっくり読み解かないと。
ジャジャガッチ | アセンブリ言語 | 21:43 | comments(0) | trackbacks(0) |

スポンサーサイト

スポンサードリンク | - | 21:43 | - | - |
Comment









Trackback
URL:

07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
PR
RECOMMEND
RECENT COMMENT
MOBILE
qrcode
OTHERS
Since 2013/09/17
LATEST ENTRY
CATEGORY
ARCHIVE
LINKS
PROFILE
SEARCH