[過去ログ]
Visual Studio 2008 Part 22 (314レス)
Visual Studio 2008 Part 22 http://mevius.5ch.net/test/read.cgi/tech/1413180800/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
203: デフォルトの名無しさん [] 2018/09/16(日) 08:02:12.99 ID:SOVIz+sV ?-2 デフォルト設定(Release) ↓このコードの逆アセンブルコード https://ideone.com/4j12ib 【実行結果】 ↓実行結果を書き込めないからこっちに書き込んどいた https://ideone.com/gOqtki 0x0007F2C44DFFF8F1:1.1053482540585101e-308 http://mevius.5ch.net/test/read.cgi/tech/1413180800/203
224: デフォルトの名無しさん [sage] 2018/09/16(日) 15:49:44.99 ID:zL1WUjLu >>218 218のコードで試してみた結果、209で言った不安定さはなくなり、 全てにおいて 0x027f が安定して読み出せるようになった。 ただしその過程で気づいたが、 IDEから起動した場合はReleaseビルドであっても、「未初期化のスタック値」も0x00が読み出せるようだ。 どうやらこれが原因の可能性が出てきた。(はっきり言って俺のバグだが) コードは以下の通りだが、 unsigned short fpu_cw, fpu_cw_after; // fpu_getcw(&fpu_cw); double norm = calc_norm_and_regulate(count, inputs, false); fpu_getcw(&fpu_cw_after); Console::Write(String::Format("{0:D}, 0x{0:x4}\r\n",fpu_cw)); Console::Write(String::Format("{0:D}, 0x{0:x4}\r\n",fpu_cw_after)); 読み出しと書き出し(Console::Write)を両方ともコメントアウトするのが面倒なので、 色々試す際、読み出しだけコメントアウトし、不定を表示させて脳内で省略していたのだが、 IDEから起動した場合はReleaseビルドであっても必ず0x0000が表示される事に気づいた。 上記『初期化していない』 fpu_cw を Releaseビルドをコマンドプロンプトから実行: 不定 ReleaseビルドをIDEから実行: 常に0x0000 となる。 実行前にあらかじめスタック領域を0fillでもしているのか? まあこれに当たっているのなら確実に俺のバグだし、これなら辻褄は合ってしまうのだが。 http://mevius.5ch.net/test/read.cgi/tech/1413180800/224
238: デフォルトの名無しさん [sage] 2018/09/16(日) 16:42:54.99 ID:zL1WUjLu >>233 ああ、なるほど、了解。 http://mevius.5ch.net/test/read.cgi/tech/1413180800/238
279: デフォルトの名無しさん [] 2018/09/17(月) 02:51:53.99 ID:dj7qSZnZ ?-2 デフォルト設定(Release) 【コード】(その1) #include "stdafx.h" #include <stdio.h> #include <stdint.h> #include <math.h> template<typename T> static double calc_norm_and_regulate(int num, T* r, bool regulate){ // <float> for debug. double norm = 0; for (int i = 0; i < num; i++) { norm += (double)r[i] * (double)r[i]; // fprintf(stdout, "[0]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm); } fprintf(stdout, "[1]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm); norm = sqrt(norm); if (regulate) for (int i=0;i<num;i++) r[i] = (T)(r[i]/norm); return norm; } http://mevius.5ch.net/test/read.cgi/tech/1413180800/279
294: デフォルトの名無しさん [] 2018/09/17(月) 10:57:31.99 ID:dj7qSZnZ で、最適化されてるかされてないかすら いまのいままで気付くことすらできない そして気付く方法すらわからなかったわけか うあわ 頭わるう。。。 キミ、プログラムくむの向いてないわ http://mevius.5ch.net/test/read.cgi/tech/1413180800/294
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.202s*