[過去ログ]
Visual Studio 2008 Part 22 (314レス)
Visual Studio 2008 Part 22 http://mevius.5ch.net/test/read.cgi/tech/1413180800/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
3: デフォルトの名無しさん [] 2014/10/14(火) 09:40:56.89 ID:yI2xaj4J >>1 乙 http://mevius.5ch.net/test/read.cgi/tech/1413180800/3
60: デフォルトの名無しさん [sage] 2015/09/30(水) 17:09:43.49 ID:wkKKGVGV Visual Studio 2008(Basic, C#, C++)の ヘルプ → 製品の登録 からライセンス登録の手続きをして登録キーを手に入れたいのですが どうすればいいのでしょうか? どなたか心優しい方、どうか教えてくださいませ。 私のパソコンOSはWindows Vista Businessです。 http://mevius.5ch.net/test/read.cgi/tech/1413180800/60
191: デフォルトの名無しさん [sage] 2018/09/15(土) 20:37:06.43 ID:UR1d6CKz ソース: #include "stdafx.h" #include <math.h> using namespace System; 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]; norm = sqrt(norm); if (regulate) for (int i=0;i<num;i++) r[i] = (T)(r[i]/norm); return norm; } int main(array<System::String ^> ^args) { int count = 16; __int64 inputs_hex[16] = { 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x1fedb1530240aa54, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x1ff0af0d95025bc3, 0x1fc9353df6af376b, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}; double* inputs = (double*)inputs_hex; double norm = calc_norm_and_regulate(count, inputs, false); Console::Write(String::Format("{0:F6}, 0x{1:x16}\r\n",norm, *(__int64*)&norm)); // Release build // 0.000000, 0x1ff68ddfb62221dd from IDE // 0.000000, 0x1ff68ddfb62221de from command prompt return 0; } http://mevius.5ch.net/test/read.cgi/tech/1413180800/191
194: デフォルトの名無しさん [sage] 2018/09/16(日) 02:47:43.28 ID:wIV2HUNW >>190 C++/CLR では、.Net を使っているから、起動方法が違うだけでも、 fpu control word の値や、使うCPU命令がx87 FPUなのか、SSE なのかが違ってくる可能性があるかもしれない。 fpu control word は、main()関数に入る前の start up codeの中で 初期化される。 http://mevius.5ch.net/test/read.cgi/tech/1413180800/194
198: デフォルトの名無しさん [] 2018/09/16(日) 07:27:22.50 ID:SOVIz+sV > 0x1ff68ddfb62221dd(Debug) > 0x1ff68ddfb62221de(Release) VS 2010 VC++ Express でも再現した http://mevius.5ch.net/test/read.cgi/tech/1413180800/198
200: デフォルトの名無しさん [] 2018/09/16(日) 07:51:03.41 ID:SOVIz+sV ?-1 デフォルト設定(Release) 【コード】 #include "stdafx.h" #include <stdio.h> #include <stdint.h> #include <math.h> int main(array<System::String ^> ^args) { __int64 inputs_hex[16] = { 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x1fedb1530240aa54, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x1ff0af0d95025bc3, 0x1fc9353df6af376b, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000 }; double* r = (double*)inputs_hex; double norm = 0; for (int i = 0; i < 16; i++) { norm += (double)r[i] * (double)r[i]; // fprintf(stdout, "[1]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm); } fprintf(stdout, "0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm); return 0; } http://mevius.5ch.net/test/read.cgi/tech/1413180800/200
202: デフォルトの名無しさん [] 2018/09/16(日) 07:53:20.79 ID:SOVIz+sV ?-2 デフォルト設定(Release) #include "stdafx.h" #include <stdio.h> #include <stdint.h> #include <math.h> int main(array<System::String ^> ^args) { __int64 inputs_hex[16] = { 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x1fedb1530240aa54, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x1ff0af0d95025bc3, 0x1fc9353df6af376b, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000 }; double* r = (double*)inputs_hex; double norm = 0; for (int i = 0; i < 16; i++) { norm += (double)r[i] * (double)r[i]; fprintf(stdout, "[1]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm); } fprintf(stdout, "0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm); return 0; } http://mevius.5ch.net/test/read.cgi/tech/1413180800/202
209: デフォルトの名無しさん [sage] 2018/09/16(日) 08:29:57.53 ID:zL1WUjLu >>194 直後のみに配置: 0x027F (倍精度) = Debug(IDE起動)のIDE内表示、Release(IDE起動)のIDE内表示、 0x03a5 (拡張倍精度) = Debug(IDE起動)、Release(IDE起動)、 0x3fdc (拡張倍精度) = Debug(コマンドプロンプト)、 0xf280, 0xf290, 0xf160, 0xf010等、不安定 = Release(コマンドプロンプト) 直前のみに配置: 直後のみと同じ結果。(つまり『何故か』安定している) Release(コマンドプロンプト)は不安定なのも同じ。 直前と直後に配置: 直前側は当然不安定になる。 直後側は「直後のみ」の結果と同じ。(Release(コマンドプロンプト)は不安定なのも同じ) 雰囲気からすると、IDE内表示は当てにならず、 命令自体は rdtsc と同じで非同期に実行されている雰囲気だが、 rdtsc命令の注意書きにある「シリアル化命令ではない」という但し書きが無く、状況は不明。 正直、正しく読み出せているか怪しい。(あてにならない) これらから推測すると、暫定的には以下。 拡張倍精度 = Debug(IDE起動)、Release(IDE起動)、Debug(コマンドプロンプト)、 不明 = Release(コマンドプロンプト) 以上が>>194その他に対する回答。 これから>>198その他について確認する。 http://mevius.5ch.net/test/read.cgi/tech/1413180800/209
218: デフォルトの名無しさん [sage] 2018/09/16(日) 14:17:40.34 ID:haV9TZ8e あ、後、インライン・アセンブラで実験する場合は、関数名の inline は 「取った」方がいい。つまり、以下の方が安心: #pragma unmanaged void fpu_getcw(unsigned short *pCW) { __asm{ mov edx,pCW fnstcw [edx]; } } #pragma managed http://mevius.5ch.net/test/read.cgi/tech/1413180800/218
231: デフォルトの名無しさん [sage] 2018/09/16(日) 16:20:22.27 ID:haV9TZ8e 逆アセンブラ結果を見てないで言うけど、もし、sqrt() が call文で関数呼び出し されているんだったら、そこで精度の違いが出てるかもしれない。 http://mevius.5ch.net/test/read.cgi/tech/1413180800/231
235: デフォルトの名無しさん [sage] 2018/09/16(日) 16:37:19.30 ID:zL1WUjLu >>231 逆アセンブラ for (int i=0;i<num;i++) norm += (double)r[i] * (double)r[i]; 00000033 33 D2 xor edx,edx 00000035 89 55 E8 mov dword ptr [ebp-18h],edx 00000038 90 nop 00000039 EB 03 jmp 0000003E 0000003b FF 45 E8 inc dword ptr [ebp-18h] 0000003e 8B 45 E8 mov eax,dword ptr [ebp-18h] 00000041 3B 45 FC cmp eax,dword ptr [ebp-4] 00000044 7D 1B jge 00000061 00000046 8B 45 F8 mov eax,dword ptr [ebp-8] 00000049 8B 55 E8 mov edx,dword ptr [ebp-18h] 0000004c DD 04 D0 fld qword ptr [eax+edx*8] 0000004f 8B 45 F8 mov eax,dword ptr [ebp-8] 00000052 8B 55 E8 mov edx,dword ptr [ebp-18h] 00000055 DC 0C D0 fmul qword ptr [eax+edx*8] 00000058 DC 45 F0 fadd qword ptr [ebp-10h] 0000005b DD 5D F0 fstp qword ptr [ebp-10h] 0000005e 90 nop 0000005f EB DA jmp 0000003B norm = sqrt(norm); 00000061 DD 45 F0 fld qword ptr [ebp-10h] 00000064 83 EC 08 sub esp,8 00000067 DD 1C 24 fstp qword ptr [esp] 0000006a E8 0D 50 7B FF call FF7B507C 0000006f DD 5D D8 fstp qword ptr [ebp-28h] 00000072 DD 45 D8 fld qword ptr [ebp-28h] 00000075 DD 5D F0 fstp qword ptr [ebp-10h] http://mevius.5ch.net/test/read.cgi/tech/1413180800/235
240: デフォルトの名無しさん [sage] 2018/09/16(日) 16:53:58.12 ID:/oSJzlqn たぶん2008の最適化ミスだと思う。 static double norm = 0;// ←"static"を追加する にするとか、最適化オプションをいじると Release/コマンドプロンプトからの起動でも 0x1ff68ddfb62221ddになる http://mevius.5ch.net/test/read.cgi/tech/1413180800/240
252: 240 [sage] 2018/09/16(日) 21:43:27.78 ID:/oSJzlqn static版 0000000e 33 C0 xor eax,eax 00000010 85 F6 test esi,esi 00000012 7E 16 jle 0000002A 00000014 DD 04 C7 fld qword ptr [edi+eax*8] 00000017 DC C8 fmul st(0),st 00000019 DC 05 00 30 CC 00 fadd qword ptr ds:[00CC3000h] 0000001f DD 1D 00 30 CC 00 fstp qword ptr ds:[00CC3000h] 00000025 40 inc eax 00000026 3B C6 cmp eax,esi 00000028 7C EA jl 00000014 0000002a DD 05 00 30 CC 00 fld qword ptr ds:[00CC3000h] 非static版 0000000e D9 EE fldz 00000010 33 C0 xor eax,eax 00000012 85 F6 test esi,esi 00000014 7E 0C jle 00000022 00000016 DD 04 C7 fld qword ptr [edi+eax*8] 00000019 DC C8 fmul st(0),st 0000001b DE C1 faddp st(1),st 0000001d 40 inc eax 0000001e 3B C6 cmp eax,esi 00000020 7C F4 jl 00000016 http://mevius.5ch.net/test/read.cgi/tech/1413180800/252
261: デフォルトの名無しさん [] 2018/09/16(日) 23:51:14.21 ID:SOVIz+sV ?-1 デフォルト設定(Release) 【実行結果】 ↓このコードの逆アセンブルコード https://ideone.com/Gf4qUQ [1]0x0007F2C44DFFF8F2:1.1053482540585106e-308 [2]0x1FF68DDFB62221DE:1.051355436595308e-154 http://mevius.5ch.net/test/read.cgi/tech/1413180800/261
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.028s