[•\ަ : ‘S‚Ä ÅV50 1-99 101- 201- 301- 2ch.sc‚Ìread.cgi‚Ö]
Update time : 02/03 06:07 / Filesize : 144 KB / Number-of Response : 326
[‚±‚̃XƒŒƒbƒh‚Ì‘‚«ž‚Ý‚ð휂·‚é]
[{” ŋߗ§‚Á‚½ƒXƒŒ•”M‚¢ƒXƒŒˆê—— : {” ŋߗ§‚Á‚½ƒXƒŒ^‹LŽÒ•ʈꗗ] [—ÞŽ—ƒXƒŒƒbƒhˆê——]


ªƒLƒƒƒbƒVƒ…ŒŸõA—ÞŽ—ƒXƒŒ“®ì‚ðC³‚µ‚Ü‚µ‚½A‚²–À˜f‚ð‚¨Š|‚¯‚µ‚Ü‚µ‚½

Visual Studio 2008 Part 22



1 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2014/10/13(ŒŽ) 15:13:20.18 ID:yFRqmPNp.net]
¡ŒöŽ®
ttp://www.microsoft.com/japan/msdn/vstudio/default.aspx

¡‘OƒXƒŒ
Visual Studio 2008 Part 21
peace.2ch.net/test/read.cgi/tech/1290969016/

¡ƒŠƒ“ƒN
Visual Studio 2008‚É“‹Ú‚³‚ꂽ17‚ÌV‹@”\
ttp://www.atmarkit.co.jp/fdotnet/special/visualstudio2008_01/visualstudio2008_01_01.html
5000ŒÂ‚̃oƒO‚Æí‚Á‚½AMS‚ªuVisual Studio 2008vRTMo‰×
ttp://www.atmarkit.co.jp/news/200711/20/vs.html

¡ŠÖ˜A
Visual Studio 2013 part4
peace.2ch.net/test/read.cgi/tech/1404333757/
Visual Studio 2012 Part8
peace.2ch.net/test/read.cgi/tech/1392639689/
Visual Studio 2010 Part21
peace.2ch.net/test/read.cgi/tech/1412136476/
Visual Studio 2005 Part 27
peace.2ch.net/test/read.cgi/tech/1291513609/

‚»‚Ì‘¼ƒeƒ“ƒvƒŒ>>2-5

196 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 20:42:48.06 ID:UR1d6CKz.net]
ƒIƒvƒVƒ‡ƒ““™(ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“jFi‘S‚ăfƒtƒH‚̂܂܂̂͂¸‚¾‚ªˆê‰žj
C/C++F
@/GL /D "WIN32" /D "NDEBUG" /D "_UNICODE" /D "UNICODE" /FD /EHa /MD /Yu"stdafx.h"
/Fp"Release\test_floating_error4.pch" /Fo"Release\\" /Fd"Release\vc90.pdb"
/W3 /nologo /c /Zi /clr /TP /errorReport:prompt /FU "c:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll"
/FU "c:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll"
/FU "c:\Windows\Microsoft.NET\Framework\v2.0.50727\System.XML.dll"
ƒŠƒ“ƒJF
/OUT:"MYPATH\test_floating_error4\Release\test_floating_error4.exe"
/INCREMENTAL:NO /NOLOGO /MANIFEST
/MANIFESTFILE:"Release\test_floating_error4.exe.intermediate.manifest"
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG
/PDB:"MYPATH\test_floating_error4\Release\test_floating_error4.pdb"
/LTCG /DYNAMICBASE /FIXED:No /NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT

ƒpƒX‚Í$MYPATH‚Æ‘‚«Š·‚¦‚½B‚Ü‚½A“Še‚ׂ̈ɓK‹X‰üs‚ð“ü‚ꂽB
‚±‚̃vƒƒWƒFƒNƒg–¼‚ÍŒ©‚ê‚Εª‚©‚邯‚¨‚ètest_floating_error4B

197 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 20:43:03.84 ID:UR1d6CKz.net]
”õl2F
‚È‚¨‚±‚Ì•û–@‚ÅŒ©‚¦‚é calc_norm_and_regulate ŠÖ”‚Ìw‹tƒAƒZƒ“ƒuƒ‹xŒ‹‰Ê‚Í
‰´‚̊‹«‚ł̕¨‚ƃR[ƒ‹ƒAƒhƒŒƒXˆÈŠO‚͈ê’v‚µ‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚¢‚éB
ˆê‰žAdiffŒ‹‰Ê‚͈ȉºB
8c8
< 0000000c cmp dword ptr ds:[00752E14h],0
---
> 0000000c cmp dword ptr ds:[007D2E14h],0
10c10
< 00000015 call 676F58B9
---
> 00000015 call 683C58B9
44c44
< 0000006a call FF0455E8
---
> 0000006a call FFD955E8

198 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 02:47:43.28 ID:wIV2HUNW.net]
>>191
C++/CLR ‚Å‚ÍA.Net ‚ðŽg‚Á‚Ä‚¢‚é‚©‚çA‹N“®•û–@‚ªˆá‚¤‚¾‚¯‚Å‚àA
fpu control word ‚Ì’l‚âAŽg‚¤CPU–½—ß‚ªx87 FPU‚Ȃ̂©ASSE
‚Ȃ̂©‚ªˆá‚Á‚Ä‚­‚é‰Â”\«‚ª‚ ‚é‚

199 –¼‘OF©‚à‚µ‚ê‚È‚¢B

fpu control word ‚ÍAmain()ŠÖ”‚É“ü‚é‘O‚Ì start up code‚Ì’†‚Å
‰Šú‰»‚³‚ê‚éB
[]
[‚±‚±‰ó‚ê‚Ă܂·]

200 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 03:19:36.22 ID:wIV2HUNW.net]
>>192
// Release build
// 0.000000, 0x1ff68ddfb62221dd from IDE
// 0.000000, 0x1ff68ddfb62221de from command prompt

‚»‚ê‚É‚µ‚Ä‚àA•ª¬‚³‚È’l‚¾‚ËB‚¿‚Ȃ݂ÉA•‚“®¬”“_•\ަ
‚Ìꇂ̗LŒø”Žš‚ÌŒ…”‚ðã‚°‚½‚çA‚ǂ̂悤‚ɂȂéH
1.xxxe-yy
•\ަ‚É‚µ‚ÄB

201 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 03:40:33.66 ID:wIV2HUNW.net]
>>192
ŽŽ‚µ‚ÉAƒ\[ƒX‚Ì–`“ª‚É
#include <stdio.h>
‚ð’ljÁ‚µ‚Ä‚©‚çA

Console::Write(String::Format("{0:F6}, 0x{1:x16}\r\n",norm, *(__int64*)&norm));
‚Ì•”•ª‚ðA

printf( "%30.30e, 0x%016X\n", norm, *(__int64*)&norm) );

‚Æ‚µ‚Ä‚Ý‚é‚Æ‚Ç‚¤‚È‚éH

202 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 03:42:01.82 ID:wIV2HUNW.net]
>>197
ΑF printf( "%30.30e, 0x%016X\n", norm, *(__int64*)&norm) );
³F printf( "%30.30e, 0x%016X\n", norm, *(__int64*)&norm );

203 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 07:27:22.50 ID:SOVIz+sV.net]
> 0x1ff68ddfb62221ddiDebugj
> 0x1ff68ddfb62221deiReleasej

VS 2010 VC++ Express ‚Å‚àÄŒ»‚µ‚½

204 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 07:38:10.70 ID:SOVIz+sV.net]
«‚±‚ÌÙ°Ì߂𔲂¯‚½‚ ‚ÆA‚·‚Å‚ÉReleaseËÞÙÄÞ‚ÆDebugËÞÙÄÞ‚Å‚Í
@norm‚Ì’l‚É·ˆÙ‚ª”­¶‚µ‚Ă邱‚Æ‚ªŠm”F‚Å‚«‚½
for (int i=0;i<num;i++) norm += (double)r[i] * (double)r[i];

«‚±‚̉º‚ÉiÙ°Ìß“à‚Éjfprintf•¶‚ð“ü‚ê‚邾‚¯‚Å
@ReleaseËÞÙÄÞ‚ÆDebugËÞÙÄÞ‚ª“¯‚¶ŽÀsŒ‹‰Ê‚ɂȂ邱‚Æ‚ªŠm”F‚Å‚«‚½
norm += (double)r[i] * (double)r[i];

‚Ƃ肠‚¦‚¸‚Ü‚¸‚±‚ꂾ‚¯‚Í•ª‚©‚Á‚½‚©‚ç
’áŠw—ð’mŒb’x‚ꂪ‘‚¢‚½³Ýºº°ÄÞ‚Ì–â‘è‰ÓŠ‚ðŒÀ’è‚·‚é



205 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 07:51:03.41 ID:SOVIz+sV.net]
‡@-1 ÃÞÌ«ÙÄÝ’èiReleasej

yº°ÄÞz

#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;
}

206 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 07:51:56.62 ID:SOVIz+sV.net]
‡@-1 ÃÞÌ«ÙÄÝ’èiReleasej

«‚±‚̺°ÄÞ‚Ì‹t±¾ÝÌÞÙº°ÄÞ
https://ideone.com/Ryyxkl

yŽÀsŒ‹‰Êz

0x0007F2C44DFFF8F2:1.1053482540585106e-308

207 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 07:53:20.79 ID:SOVIz+sV.net]
‡@-2 ÃÞÌ«ÙÄÝ’èiReleasej

#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;
}

208 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 08:02:12.99 ID:SOVIz+sV.net]
‡@-2 ÃÞÌ«ÙÄÝ’è(Release)

«‚±‚̺°ÄÞ‚Ì‹t±¾ÝÌÞÙº°ÄÞ
https://ideone.com/4j12ib

yŽÀsŒ‹‰Êz

«ŽÀsŒ‹‰Ê‚ð‘‚«ž‚߂Ȃ¢‚©‚炱‚Á‚¿‚É‘‚«ž‚ñ‚Ç‚¢‚½
https://ideone.com/gOqtki

0x0007F2C44DFFF8F1:1.1053482540585101e-308

209 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 08:05:50.92 ID:SOVIz+sV.net]
‡A-1 Å“K‰»–³Œø (/Od)iReleasej

¦ º°Äނ͇@-1i>>201j‚Æ“¯‚¶

«‚±‚̺°ÄÞ‚Ì‹t±¾ÝÌÞÙº°ÄÞ
https://ideone.com/cONCAx

yŽÀsŒ‹‰Êz

0x0007F2C44DFFF8F1:1.1053482540585101e-308

210 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 08:09:59.78 ID:SOVIz+sV.net]
‡A-2 Å“K‰»–³Œø (/Od)iReleasej

¦ º°Äނ͇A-2i>>203j‚Æ“¯‚¶

«‚±‚̺°ÄÞ‚Ì‹t±¾ÝÌÞÙº°ÄÞ
https://ideone.com/kuRt3w

yŽÀsŒ‹‰Êz

¦ ‡@-2i>>204j‚Æ“¯‚¶

0x0007F2C44DFFF8F1:1.1053482540585101e-308

211 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 08:20:27.67 ID:SOVIz+sV.net]
‡@-1A‡@-2‚Ì‹t±¾ÝÌÞÙ‚Ìo—ÍŒ‹‰Ê‚ð”äŠr‚·‚邯Œ´Œ^‚ð‚Æ‚Ç‚ß‚Ä‚È‚¢‚®‚ç‚¢¸ÞÁ®¸ÞÁ®‚ɈႤiÅ“K‰»‚Ì‚¹‚¢‚Æl‚¦‚ç‚ê‚éj
‡A-1A‡A-2‚Ì‹t±¾ÝÌÞÙ‚Ìo—ÍŒ‹‰Ê‚ð”äŠr‚·‚邯·ˆÙ‚͂قƂñ‚ǂȂ¢i‡A‚Í—¼•û‚Æ‚à‚Ü‚Á‚½‚­Å“K‰»‚³‚ê‚ĂȂ¢‚©‚ç“–‘Rj

‡@-1‚ƇA-1‚Ì‹t±¾ÝÌÞÙ‚Ìo—ÍŒ‹‰Ê‚ð”äŠr‚·‚邯Œ´Œ^‚ð‚Æ‚Ç‚ß‚Ä‚È‚¢‚®‚ç‚¢¸ÞÁ®¸ÞÁ®‚ɈႤi‡@-1‚̺°ÄÞ(>>201)‚͂͂°‚µ‚­³ÝºÅ“K‰»‚³‚ê‚Ă邯l‚¦‚ç‚ê‚éj
‡@-2‚ƇA-2‚Ì‹t±¾ÝÌÞÙ‚Ìo—ÍŒ‹‰Ê‚ð”äŠr‚·‚邯·ˆÙ‚͂قƂñ‚ǂȂ¢i‡@-2‚̺°ÄÞ(>>203)‚Í‚ ‚Ü‚èÅ“K‰»‚³‚ê‚ĂȂ¢‚Æl‚¦‚ç‚ê‚éj

‚Í‚Á‚«‚è‚¢‚Á‚ÄA‚±‚êˆÈ㌩‚é‹C‚à‚µ‚È‚¢‚µÃ·Ä°‚¾‚ª
³Ýº‚Ý‚½‚¢‚ÈÅ“K‰»‚ʼn‰ŽZ‚̇˜‚ª“ü‚ê‘Ö‚í‚Á‚½‚¹‚¢‚ÅAŒë·‚ª”­¶‚µ‚Ä‚¢‚é‚à‚Ì‚Æl‚¦‚ç‚ê‚é

212 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 08:28:37.25 ID:zL1WUjLu.net]
>>199ˆÈ~A
‚·‚Ü‚ñA“ü‚ê‘Ö‚í‚è‚ɂȂ邩‚à‚µ‚ê‚ñ‚ªŒã‚ÅŠm”F‚·‚éB
‚Ü‚¸>>195‚»‚Ì‘¼‚ɂ‚¢‚ĉñ“š‚·‚éB

>>195
SSE‚Í /arch:SSE ‚Ü‚½‚Í /arch:SSE2 ‚łȂ¢‚Æo‚È‚¢‚±‚ƂɂȂÁ‚Ä‚¨‚èA–ܘ_Ý’è‚Í‚µ‚Ä‚¢‚È‚¢B
‚Ü‚½A‹tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚Å‚Í x87 –½—߂݂̂ł ‚é‚Ì‚àŠm”F‚µ‚Ä‚¢‚éB
‚½‚¾¡‰ñ‚Ì–â‘è‚ÍA–{“–‚ÉReleaseƒrƒ‹ƒh‚̃oƒCƒiƒŠ‚ð‹tƒAƒZƒ“ƒuƒ‹‚µ‚Ä‚¢‚é‚©‰ö‚µ‚¢Ž–‚¾‚ªB

>>196
¬‚³‚¢’l‚Ȃ̂͋ôX‚¾B
’H‚Á‚Äs‚Á‚Ä‚»‚ꂪ1‰ñ–ڂɃqƒbƒg‚·‚é“ü—̓f[ƒ^‚¾‚Á‚½‚¾‚¯‚Ì‚±‚ÆB

>>197
.NET‚Ì‘Ž®Žw’è‚̓OƒO‚è“ï‚¢‚ªˆÈ‰ºB
https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings
ŠT‚Ëprintf‚Æ“¯‚¶‚ÅAŽ©“®“I‚É‚â‚Á‚Ä‚­‚ê‚é‚Ì‚ª‘‚¦‚Ä‚¢‚éB
30Œ…—~‚µ‚¯‚ê‚ΈȉºB
Console::Write(String::Format("{0:E6}, {0:E30}\r\n",norm));
// o—Í‚Í 1.051355E-154, 1.051355436595307800000000000000E-154
‚È‚¨double‚Í16Œ…‚ÈB(15.9=53*log(10)2)

‚½‚¾“–‚½‚è‘O‚¾‚ªA‘Ž®‚ð•Ï‚¦‚½‚Æ‚±‚ë‚ÅŒvŽZŒ‹‰Ê‚͕ςí‚ç‚È‚¢‚µA
¸“x‚Ì–â‘è‚ɂ͊֌W‚È‚¢B

213 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 08:29:03.14 ID:zL1WUjLu.net]
>>195
FPU control registor ‚ɂ‚¢‚Ă͉½ŒÌ‚©ˆÀ’肵‚½Œ‹‰Ê‚𓾂ç‚ê‚Ä‚¢‚È‚¢B
ƒCƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰‚͈ȉº‚Ì’Ê‚è‚ÅA

#pragma unmanaged
inline void fpu_getcw(unsigned short* cw) {
__asm{
fnstcw [cw];
}
}
#pragma managed

‚±‚ê‚ð norm = calc_norm_and_regulate( ... ) ‚Ì’¼‘O/’¼Œã‚É”z’u‚µ‚ēǂÝo‚µA
“¯—l‚ɃRƒ“ƒ\[ƒ‹o—Í‚·‚邯AˆÈ‰º‚ƂȂéB
‚Ü‚½AIDE‚Å‹N“®‚µ‚½ê‡‚ÍAuƒŒƒWƒXƒ^v‚ÅŒ©‚ê‚éB
‚È‚¨’è‹`‚͈ȉº‚Ì’Ê‚èB
[9:8]‚ɑ΂µA
0x00 : ’P¸“x(24bit)
0x01 : reserved
0x10 : ”{¸“x(53bit)
0x11 : Šg’£”{¸“x(64bit)
[11:10]‚ɑ΂µ
0x00 : ŋߒl
0x01 : Ø‚èŽÌ‚Ä
0x10 : Ø‚èã‚°
0x11 : 0•ûŒü‚Ö‚ÌØ‚èŽÌ‚Ä

214 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 08:29:57.53 ID:zL1WUjLu.net]
>>195
’¼Œã‚݂̂ɔz’uF
0x027F (”{¸“xj @Debug(IDE‹N“®j‚ÌIDE“à•\ަARelease(IDE‹N“®j‚ÌIDE“à•\ަA
0x03a5 (Šg’£”{¸“x)@@Debug(IDE‹N“®jARelease(IDE‹N“®jA
0x3fdc (Šg’£”{¸“xj @DebugiƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒgjA
0xf280, 0xf290, 0xf160, 0xf010“™A•sˆÀ’è@@ReleaseiƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒgj

’¼‘O‚݂̂ɔz’uF
’¼Œã‚݂̂Ɠ¯‚¶Œ‹‰ÊBi‚‚܂èw‰½ŒÌ‚©xˆÀ’肵‚Ä‚¢‚éj
ReleaseiƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒgj‚Í•sˆÀ’è‚È‚Ì‚à“¯‚¶B

’¼‘O‚Æ’¼Œã‚É”z’uF
’¼‘O‘¤‚Í“–‘R•sˆÀ’è‚ɂȂéB
’¼Œã‘¤‚Íu’¼Œã‚Ì‚Ýv‚ÌŒ‹‰Ê‚Æ“¯‚¶B(ReleaseiƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒgj‚Í•sˆÀ’è‚È‚Ì‚à“¯‚¶)

•µˆÍ‹C‚©‚ç‚·‚邯AIDE“à•\ަ‚Í“–‚ĂɂȂ炸A
–½—ߎ©‘Ì‚Í rdtsc ‚Æ“¯‚¶‚Å”ñ“¯Šú‚ÉŽÀs‚³‚ê‚Ä‚¢‚镵ˆÍ‹C‚¾‚ªA
rdtsc–½—߂̒ˆÓ‘‚«‚É‚ ‚éuƒVƒŠƒAƒ‹‰»–½—߂ł͂Ȃ¢v‚Æ‚¢‚¤’A‚µ‘‚«‚ª–³‚­A󋵂͕s–¾B
³’¼A³‚µ‚­“Ç‚Ýo‚¹‚Ä‚¢‚é‚©‰ö‚µ‚¢Bi‚ ‚ĂɂȂç‚È‚¢j
‚±‚ê‚ç‚©‚ç„‘ª‚·‚邯AŽb’è“I‚ɂ͈ȉºB

Šg’£”{¸“x@@Debug(IDE‹N“®jARelease(IDE‹N“®jADebugiƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒgjA
•s–¾@@ReleaseiƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒgj


ˆÈオ>>195‚»‚Ì‘¼‚ɑ΂·‚é‰ñ“šB
‚±‚ê‚©‚ç>>199‚»‚Ì‘¼‚ɂ‚¢‚ÄŠm”F‚·‚éB



215 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 12:52:37.56 ID:haV9TZ8e.net]
>>210
‹»–¡[‚¢Œ‹‰Ê‚¾B

216 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 13:21:26.16 ID:haV9TZ8e.net]
>>210
>–½—ߎ©‘Ì‚Í rdtsc ‚Æ“¯‚¶‚Å”ñ“¯Šú‚ÉŽÀs‚³‚ê‚Ä‚¢‚镵ˆÍ‹C‚¾‚ªA
>rdtsc–½—߂̒ˆÓ‘‚«‚É‚ ‚éuƒVƒŠƒAƒ‹‰»–½—߂ł͂Ȃ¢v‚Æ‚¢‚¤’A‚µ‘‚«‚ª–³‚­A󋵂͕s–¾B
>³’¼A³‚µ‚­“Ç‚Ýo‚¹‚Ä‚¢‚é‚©‰ö‚µ‚¢Bi‚ ‚ĂɂȂç‚È‚¢j

ƒCƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰‚ðŽg‚킸‚ÉA

_control87(), _controlfp() : Get and set the floating-point control word.

unsigned int _control87( unsigned int new, unsigned int mask );
unsigned int _controlfp( unsigned int new, unsigned int mask );

‚ðŽg‚Á‚Ă݂½‚ç‚Ç‚¤‚È‚éH

217 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 13:31:15.50 ID:Q5j4SiHR.net]
win32ƒRƒ“ƒ\[ƒ‹‚Ȃ猋‰Ê‚ª“¯‚¶B ‚à‚¤——R‚Í•ª‚©‚Á‚½‚̂ɉ½‚ª–â‘è‚È‚ñ‚¾H‚±‚ñ‚Ȃ̉½‚̉e‹¿‚à‚È‚¢‚¾‚낤B

218 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 13:33:14.92 ID:zL1WUjLu.net]
>>199
ÄŒ»ŽÀŒ±‚ ‚肪‚Æ‚¤B
‚µ‚©‚µFX–â‘肪‚ ‚éB

1. ‰´‚Í‹N“®•û–@‚É‚æ‚éˆá‚¢‚ɂ‚¢‚ătƒH[ƒJƒX‚µ‚Ä‚¢‚邪A
@ŒN‚ÍRelease/Debug‚̈Ⴂ‚ɃtƒH[ƒJƒX‚µ‚Ä‚¢‚éB
2. VC++2008‚Å‚ÍÄŒ»‚µ‚È‚¢B(VC++2010‚Å‚ÍÄŒ»‚·‚éj
3. ƒ\[ƒX‰ü•Ï‚µ‚·‚¬B‚»‚ê‚ł͈Ӗ¡‚ª‚È‚¢B
4. >>207‚ÌŒ‹˜_‚͊ԈႢB

‚Ü‚¸–â‘è‚Ȃ̂̓\[ƒX‚̉ü•Ï‚¾B
ƒ‹[ƒv‰ñ”‚ð16‰ñ‚ÆŒˆ‚ߑł¿‚µ‚½‚±‚ƂŠ8*2 ‚É“WŠJ‚³‚ê‚Ä‚¢‚éB
‚»‚ÌŒ‹‰ÊAŒ³‚̃\[ƒXi‰´‚ª‘˜‹ö‚µ‚½ó‹µj‚ł͔­¶‚µ‚¦‚È‚¢‚±‚Æ‚ª”­¶‚µ‚Ä‚¢‚éB
‚±‚ê‚ł͈Ӗ¡‚ª‚È‚¢B

‚»‚µ‚ÄAŒN‚ÌŒ‹˜_‚͊ԈႢ‚¾B
~ > ³Ýº‚Ý‚½‚¢‚ÈÅ“K‰»‚ʼn‰ŽZ‚̇˜‚ª“ü‚ê‘Ö‚í‚Á‚½‚¹‚¢‚ÅAŒë·‚ª”­¶‚µ‚Ä‚¢‚é‚à‚Ì‚Æl‚¦‚ç‚ê‚é
‹tƒAƒZƒ“ƒuƒ‹‚ð’Ç‚¦‚Εª‚©‚邪A‰‰ŽZ‡˜‚Í“ü‚ê‘Ö‚í‚Á‚Ä‚¢‚È‚¢B
Œ´ˆö‚ÍADebug‚Å‚Í fld/fmul/fadd/fstp ‚Æ–ˆ‰ñ64bit‚É®Œ`‚³‚ê‚é‚̂ɑ΂µA
Release‚Å‚Í (fld/fmul/fadd)*8 + fstp ‚Æ®Œ`‚ª8‰ñ‚É1‰ñ‚ÆŒ¸‚èA
8‰ñ‚Í80bit(Šg’£”{¸“xj‚ʼn‰ŽZ‚³‚ê‚é‚©‚炾B
(‚±‚¤‚È‚Á‚½‚̂͌N‚ª16‰ñƒ‹[ƒvŒˆ‚ߑł¿ƒR[ƒh‚ɉü•Ï‚µ‚½‚©‚ç)
‚½‚¾‚µIDEã‚Ì fpu control registor ‚Ì’l‚Í ‘Š•Ï‚í‚炸0x027F(”{¸“xj‚ƂȂÁ‚Ä‚¨‚èA
IDE‚Ì‚±‚Ì•\ަ‚ª“–‚ĂɂȂç‚È‚¢Ž–‚Í•ª‚©‚éB

‚È‚¨VC++2008‚Å‚ÍÄŒ»‚µ‚È‚©‚Á‚½B
‰´‚̊‹«‚Å‚ÍA16‰ñŒˆ‚ߑł¿ƒR[ƒh‚Å‚à 8*2 ‚É“WŠJ‚³‚ꂸADebug‚Æ“¯‚¶ƒR[ƒh‚¾‚©‚炾B
–ܘ_Œ‹‰Ê‚à“¯‚¶‚¾‚Á‚½B

219 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 13:33:48.22 ID:zL1WUjLu.net]
>>199
–â‘è‚ÍA‰´‚̊‹«‚ʼn´‚ª’ñ‹Ÿ‚µ‚½ƒR[ƒh>>192‚¾‚ÆA
“¯—l‚É“WŠJ‚³‚ê‚È‚¢‚É‚àŠÖ‚í‚炸Aw‹N“®•û–@‚É‚æ‚Á‚ÄxŒ‹‰Ê‚ªˆÙ‚È‚Á‚Ä‚µ‚Ü‚¤“_‚¾B
‰´‚̊‹«‚Å‚ÌRelease/Debug‚Ì‹tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚Ìdiff‚͈ȉºB
17c17
< 0000000c cmp dword ptr ds:[001C2E14h],0
---
> 0000000c cmp dword ptr ds:[00702E14h],0
19c19
< 00000015 call 68302BA9
---
> 00000015 call 683A5AB1
93c93
< 0000015a call FF6C3098
---
> 0000015a call FFCA57E8
98c98
< 0000016f push 0B5311Ch
---
> 0000016f push 0D03188h
104,105c104,105
< 00000183 push 4F9D68h
< 00000188 call FF6C30A4
---
> 00000183 push 2B71C0h
> 00000188 call FFCA57F4
ƒAƒhƒŒƒX‚Ì•ÏX‚¾‚¯‚Å‚ ‚èAŒN‚ÌŒ‹‰Ê
uƒ‹[ƒv‰ñ”‚ðŒˆ‚ß‘Å‚¿‚µ‚½‚±‚Ƃɂæ‚èƒAƒ“ƒ[ƒŠƒ“ƒO‚³‚êAˆê•”‚̉‰ŽZ‚ªx87¸“x‚ÅŒvŽZ‚³‚ê‚év‚ɂ͊Y“–‚µ‚È‚¢B
‚»‚µ‚ÄA‚±‚Ìó‹µ‚Å‚àŒ‹‰Ê‚ªˆÙ‚È‚Á‚Ä‚µ‚Ü‚¤‚±‚Æ‚ª–â‘è‚Ȃ̂¾B

ŒN‚ÍŒN‚ªŸŽè‚ÉV‚µ‚­ì‚èž‚ñ‚¾–â‘è‚ɑ΂µAŠÔˆá‚Á‚½Œ‹˜_‚Å‚¨’ƒ‚ð‘÷‚µ‚½‚É‚·‚¬‚È‚¢B
ŒN‚ª’m‚Á‚Ä‚¢‚éFPUŠÖ˜A‚Ì‚±‚Ƃ͂±‚¿‚ç‚à’m‚Á‚Ä‚¢‚éã‚ÅAŽ¿–₵‚Ä‚¢‚éB

220 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 13:53:17.67 ID:haV9TZ8e.net]
>>214
‚È‚é‚Ù‚ÇA‘S‚­•Ê‚Ì2‚‚̗—R‚ÅA¸“x‚ª•Ï‚í‚Á‚Ä‚¢‚é‰Â”\«i‚Æ‚¢‚¤‚æ‚葽•ªAŠmŽÀj‚ª‚ ‚邯B

‚»‚ê‚͈ȉº‚Ì2‚ÂF

1. Debug”Å‚ÆRelease”łłÍAÅ“K‰»‚ÌŒ‹‰ÊAx87 FPU–½—߂̎g‚í‚ê•û‚ª•Ï‚í‚éB
@ x87‚Å‚ÍAƒƒ‚ƒŠ‚É‘‚«–ß‚³‚¸‚É st(0)`st(7)ƒŒƒWƒXƒ^‚É“ü‚Á‚Ä‚¢‚é“r’†‚Å‚ÍA
@Šg’£”{¸“x‚Ì80BIT‚ÅŒvŽZ‚³‚ê‚邪A‘‚«–ß‚·‚Ædouble‚Ìꇂłà64BIT‚ÉŠÛ‚ß
@‚ç‚ê‚éB‚È‚é‚ׂ­ƒƒ‚ƒŠ‚É‘‚«–ß‚³‚¸‚ɃŒƒWƒXƒ^‚Á‚½•û‚ª‚‘¬‚Ȃ̂ÅARelease”Å
@‚Å‚ÍA80BIT‚ÅŒvŽZ‚³‚ê‚éuŠúŠÔv‚ª‘½‚­‚È‚éB‚»‚Ì‚½‚ßADebug”Å‚ÆRelese”łłÍ
@Œ‹‰Ê‚ª‹Í‚©‚Ɉá‚Á‚Ä‚­‚éB

2. fpu control word ‚ªˆá‚Á‚Ä‚¢‚ÄAst(0)`st(7)‚É“ü‚Á‚Ä‚¢‚Ä‚àAŒvŽZ‚ª
@80BIT‚©A64BITA32BIT‚̂ǂê‚ÅŒvŽZ‚³‚ê‚é‚©ˆÙ‚È‚Á‚½‚èAŠÛ‚ß•û‚ªŽlŽÌŒÜ“ü
@‚©A³•‰“ñŽí—Þ‚Ì•ûŒü‚ÌØ‚èŽÌ‚ĂȂǂª•Ï‚í‚Á‚Ä‚¢‚éB


‚»‚µ‚ÄAIDE‚©‚ç‹N“®‚µ‚½ê‡‚ÆAƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚©‚ç‹N“®‚µ‚½ê‡‚ÅŒ‹‰Ê‚ªˆá‚¤
‚Ì‚ÍAu2.v‚Ì——R‚É‚æ‚é‚à‚̂ł͂Ȃ¢‚©‚ÆB‚»‚µ‚ÄAŽÀÛ‚ÉAƒCƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰
‚Å fpu control word ‚ð“ǂݎæ‚Á‚Ä‚Ý‚é‚ÆA•sˆÀ’è‚È’l‚ª“Ç‚Ýo‚³‚ꂽ‚ÆB

221 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 13:58:15.86 ID:haV9TZ8e.net]
‚Ü‚¸A
__asm{
@fnstcw [cw];
}
‚ł͂Ȃ­A_control87() ‚ðŽg‚Á‚Ă݂ė~‚µ‚¢B

ƒCƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰‚ÍA“Æ—§‚µ‚½ *.asm ‚Å‘‚­‚æ‚èŠëŒ¯‚Èꇂª
‚ ‚é‚©‚à’m‚ê‚È‚¢‚Ì‚ÅB“Á‚ÉCŠÖ”‚̈ø”A¡‚ÌꇂÍAucwv‚ð
ƒCƒ“ƒ‰ƒCƒ“EƒAƒZƒ“ƒuƒ‰‚Å—p‚¢‚½ê‡A³‚µ‚¢ƒR[ƒh‚ªo‚Ä‚¢‚é‚©‚Ç‚¤‚©
‚Í’ˆÓ‚ª•K—vB

222 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 14:05:28.41 ID:haV9TZ8e.net]
>>209
‚æ‚­Œ©‚邯A‚»‚ê‚ÍA‚©‚Ȃ蕡ŽG‚ÈŽ–—‚Ý‚»‚¤‚ȃR[ƒhB
ˆÈ‰º‚̂悤‚É‚µ‚½•û‚ªˆÀSB‚È‚¨Aucwv‚Æ‚¢‚¤’Z‚·‚¬‚

223 –¼‘OFéˆø”–¼
‚à’·”N‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒoŒ±‚©‚ç‚·‚邯AƒCƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰‚Å‚Í
•|‚¢B‚Ü‚½A

TTTT reg,ˆø”–¼
‚â
TTTT ˆø”–¼
‚Í‘åä•v‚Å‚àA
TTTT reg,[ˆø”–¼]
‚â
TTTT [ˆø”–¼]
‚Í1–½—߂ł͕s‰Â”\‚ÈŽ–‚ðƒRƒ“ƒpƒCƒ‰‚ÉŽwަ‚µ‚Ä‚¢‚鎖‚ɂȂé‚Ì‚Å
‚¿‚å‚Á‚Æ•|‚¢BŠÔÚ‚ÌŠÔÚA‚‚܂èA[[ebp+8]]‚Ý‚½‚¢‚ÈŽ–‚ð—v‹
‚µ‚Ä‚¢‚邪A‚»‚ñ‚ȃIƒyƒ‰ƒ“ƒh‚ªŽg‚¦‚éƒAƒZƒ“ƒuƒŠ–½—ß‚Íx86/x64
‚ł͑¶Ý‚µ‚È‚¢‚Ì‚ÅB


#pragma unmanaged
inline void fpu_getcw(unsigned short *pCW) {
@__asm{
@@mov edx,pCW
@@fnstcw [edx];
@}
}
#pragma managed
[]
[‚±‚±‰ó‚ê‚Ă܂·]

224 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 14:17:40.34 ID:haV9TZ8e.net]
‚ AŒãAƒCƒ“ƒ‰ƒCƒ“EƒAƒZƒ“ƒuƒ‰‚ÅŽÀŒ±‚·‚éꇂÍAŠÖ”–¼‚Ì inline ‚Í
uŽæ‚Á‚½v•û‚ª‚¢‚¢B‚‚܂èAˆÈ‰º‚Ì•û‚ªˆÀSF

#pragma unmanaged
void fpu_getcw(unsigned short *pCW) {
@__asm{
@@mov edx,pCW
@@fnstcw [edx];
@}
}
#pragma managed



225 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 15:23:18.78 ID:h8nMbN0G.net]
‚Ü‚½Šî–{‚ɖ߂邪A>>193‚Å/MD‚ɂȂÁ‚Ä‚é‚Ì‚Å
/MT‚â/MTd‚Å‚à”­¶‚·‚é‚©‚µ‚Ă݂½•û‚ª‚¢‚¢

226 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 15:37:02.44 ID:Q5j4SiHR.net]
.net‚Íx87ƒRƒ“ƒeƒLƒXƒg‚ð‚·‚×‚Ä•ÛŽ‚µ‚Ü‚¹‚ñ‚Á‚Ä•ª‚©‚Á‚½‚ñ‚¾‚©‚ç‚à‚¤\•ªB
win32‚©x64‚É‚·‚ê‚ΉðŒˆB‚»‚à‚»‚à–â‘è‚ɂȂéŽd—lƒoƒO‚¶‚á‚È‚¢B

227 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 15:40:56.17 ID:haV9TZ8e.net]
>>220
ƒzƒ“ƒg‚¾B/MD‚¾‚ÆARuntime Library ‚Æ‚µ‚Ä DLL ‚Ì‚à‚Ì‚ðŽg‚Á‚Ä‚µ‚Ü‚¤B
‚±‚ê‚ÍA¡‰ñ‚ÌŒ»Û‚É”ñí‚Éd—v‚ȉe‹¿‚ð—^‚¦‚Ä‚¢‚é‚©‚à’m‚ê‚È‚¢B

228 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 15:42:36.82 ID:haV9TZ8e.net]
>>221
‚¢‚âA‚Ü‚¾‚Ü‚¾‹»–¡[‚¢B
‚±‚±‚ÅI‚í‚点‚¸‚É‚à‚Á‚Æ“O’ꂵ‚Ä’Ç‹y‚·‚ׂ«‚¾B

229 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 15:48:45.63 ID:zL1WUjLu.net]
>>212
‚»‚ê‚͂ǂ¤‚â‚çclr‚ł͎g‚¦‚È‚¢‚炵‚¢B
> These functions are ignored when you use /clr (Common Language Runtime Compilation) or /clr:pure to compile
> because the common language runtime (CLR) only supports the default floating-point precision.
> https://msdn.microsoft.com/en-us/library/e9b52ceh.aspx

‚Ƃ͂¢‚¦–³—–î—‚â‚Á‚Ă݂½BŒx‚Ío‚邪ƒRƒ“ƒpƒCƒ‹‚Í’Ê‚éB
Œ‹‰Ê‚ÍA‚Ç‚±‚É’u‚¢‚Ä‚àADebug/Release‚Å‚àAí‚É 0x9001f ‚ª“Ç‚Ýo‚³‚ê‚éB
‚½‚¾‚µA‚±‚ê‚Íã‹L‚ÌŽd—l‚©‚炵‚ÄA“–‚ĂɂȂç‚È‚¢B

230 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 15:49:44.99 ID:zL1WUjLu.net]
>>219
218‚̃R[ƒh‚ÅŽŽ‚µ‚Ă݂½Œ‹‰ÊA209‚ÅŒ¾‚Á‚½•sˆÀ’肳‚͂Ȃ­‚È‚èA
‘S‚Ăɂ¨‚¢‚Ä 0x027f ‚ªˆÀ’肵‚ēǂÝo‚¹‚邿‚¤‚ɂȂÁ‚½B

‚½‚¾‚µ‚»‚̉ߒö‚Å‹C‚¢‚½‚ªA
IDE‚©‚ç‹N“®‚µ‚½ê‡‚ÍReleaseƒrƒ‹ƒh‚Å‚ ‚Á‚Ä‚àAu–¢‰Šú‰»‚̃Xƒ^ƒbƒN’lv‚à0x00‚ª“Ç‚Ýo‚¹‚邿‚¤‚¾B
‚Ç‚¤‚â‚炱‚ꂪŒ´ˆö‚̉”\«‚ªo‚Ä‚«‚½Bi‚Í‚Á‚«‚茾‚Á‚ĉ´‚̃oƒO‚¾‚ªj

ƒR[ƒh‚͈ȉº‚̒ʂ肾‚ªA
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));
“Ç‚Ýo‚µ‚Æ‘‚«o‚µ(Console::Write)‚𗼕û‚Æ‚àƒRƒƒ“ƒgƒAƒEƒg‚·‚é‚Ì‚ª–Ê“|‚Ȃ̂ÅA
FXŽŽ‚·ÛA“Ç‚Ýo‚µ‚¾‚¯ƒRƒƒ“ƒgƒAƒEƒg‚µA•s’è‚ð•\ަ‚³‚¹‚Ä”]“à‚ÅÈ—ª‚µ‚Ä‚¢‚½‚Ì‚¾‚ªA
IDE‚©‚ç‹N“®‚µ‚½ê‡‚ÍReleaseƒrƒ‹ƒh‚Å‚ ‚Á‚Ä‚à•K‚¸0x0000‚ª•\ަ‚³‚ê‚鎖‚É‹C‚¢‚½B

ã‹Lw‰Šú‰»‚µ‚Ä‚¢‚È‚¢x fpu_cw ‚ð
Releaseƒrƒ‹ƒh‚ðƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚©‚çŽÀsF •s’è
Releaseƒrƒ‹ƒh‚ðIDE‚©‚çŽÀsF í‚É0x0000
‚ƂȂéB
ŽÀs‘O‚É‚ ‚ç‚©‚¶‚߃Xƒ^ƒbƒN—̈æ‚ð0fill‚Å‚à‚µ‚Ä‚¢‚é‚Ì‚©H
‚Ü‚ ‚±‚ê‚É“–‚½‚Á‚Ä‚¢‚é‚̂ȂçŠmŽÀ‚ɉ´‚̃oƒO‚¾‚µA‚±‚ê‚È‚ç’Òåë‚͇‚Á‚Ä‚µ‚Ü‚¤‚Ì‚¾‚ªB

231 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 15:51:01.50 ID:zL1WUjLu.net]
>>219
‚È‚¨A‹tƒAƒZƒ“ƒuƒ‹‚ŃR[ƒhƒoƒCƒg‚ð•\ަ‚³‚¹‚ÄŠm‚©‚߂邱‚Æ‚Ío—ˆ‚éB
³‚µ‚¢ƒR[ƒh‚Ío‚Ä‚¢‚éB(‚½‚¾‚µ•sˆÀ’èj
inline void fpu_getcw(unsigned short* cw) {
00DA1540 55 push ebp
00DA1541 8B EC mov ebp,esp
__asm{
fnstcw [cw];
00DA1543 D9 7D 08 fnstcw word ptr [cw]
}
}
00DA1546 5D pop ebp
00DA1547 C3 ret

fnstcw‚Í D9 /7 ‚Å 7D ‚È‚ç [EBP+disp8] ‚ƂȂèA 7D 08 ‚Í [EBP+08] ‚ƂȂéB
‚‚܂èƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^+8‚̗̈æ‚É‘‚«–ß‚¹A‚ƂȂéB
[ebp+0]‚ÍŒ³‚Ìebp‚ª“ü‚Á‚Ä‚¢‚é‚©‚çA(push‚µ‚Ä‚¢‚é‚Ì‚Åj
[ebp+4]‚Écall‚Ì–ß‚è’lƒAƒhƒŒƒX
[ebp+8]‚Écwi‘æˆêˆø”j‚ª“ü‚Á‚Ä‚¢‚邱‚ƂɂȂéB
‚±‚ê‚ͳ‚µ‚¢ƒR[ƒh‚¾B
‚µ‚©‚µÄ“xŽŽ‚µ‚½‚ªAŠm‚©‚É•sˆÀ’肾B‰½ŒÌ‚©‚Í•ª‚©‚ç‚ñB
inlineŽæ‚Á‚Ă݂Ăà•sˆÀ’è‚̂܂ÜB

> ‚»‚ñ‚ȃIƒyƒ‰ƒ“ƒh‚ªŽg‚¦‚éƒAƒZƒ“ƒuƒŠ–½—ß‚Íx86/x64
> ‚ł͑¶Ý‚µ‚È‚¢‚Ì‚ÅB
³’¼A/7‚̈Ӗ¡‚ª•ª‚©‚ç‚È‚¢‚Ì‚¾‚ªAà–¾‚Í
> /digit | 0 ‚©‚ç7 ‚Ü‚Å‚Ì”Žš‚ÅA–½—ß‚ÌModR/M ƒoƒCƒg‚ªr/miƒŒƒWƒXƒ^‚Ü‚½‚̓ƒ‚ƒŠjƒIƒyƒ‰ƒ“ƒh‚¾‚¯‚ðŽg—p‚·‚邱‚Æ‚ðŽ¦‚·B
> reg ƒtƒB[ƒ‹ƒh‚É‚ÍA–½—߂̃IƒyƒR[ƒh‚ðŠg’£‚·‚é”Žš‚ª“ü‚Á‚Ä‚¢‚éB(Intel‚̃}ƒjƒ…ƒAƒ‹‚æ‚èj
‚ƂȂÁ‚Ä‚¢‚é‚Ì‚¾‚ªA‚±‚ê‚͂ǂ¤‚¢‚¤ˆÓ–¡‚¾H
ModR/MƒoƒCƒg‚ª‘S•”Žg‚¦‚邯‚·‚邯 [ebp+disp8]o—ˆ‚邱‚ƂɂȂéB‚»‚µ‚Ä‚»‚̃R[ƒh‚Ío‚Ä‚¢‚éB
‚½‚¾‚µA“®ì‚͉ö‚µ‚¢‚Ì‚àŽ–ŽÀB
ModR/M‚̈ꕔ‚µ‚©Žg‚¦‚È‚¢A‚Æ‚¢‚¤‚±‚Æ‚©H

232 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 15:51:25.16 ID:zL1WUjLu.net]
>>219
218‚̃R[ƒh‚¾‚ÆA
00381002 EC in al,dx
__asm{
mov edx,pCW
00381003 8B 55 08 mov edx,dword ptr [pCW]
fnstcw [edx];
00381006 D9 3A fnstcw word ptr [edx]
}
}
00381008 5D pop ebp
00381009 C3 ret

D9 3A ‚È‚ç‚Ü‚ñ‚Ü fnstcw [edx] ‚¾B
——R‚Í•ª‚©‚ç‚ñ‚ª‚±‚¿‚炾‚ƈÀ’肵‚Ä‚¢‚é‚Ì‚ÅAŒ‹‰Ê‚Æ‚µ‚Ă͂±‚Ì‚â‚è•û‚ª³‚µ‚¢B

233 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:02:47.64 ID:haV9TZ8e.net]
>>226
‚ð‚ðB‚â‚Í‚èA‚ ‚éˆÓ–¡‚Å‚ÍVC‚ªŠÔˆá‚Á‚½ƒAƒZƒ“ƒuƒŠƒR[ƒh‚ðo‚µ‚Ä‚¢‚½‚æB
‚»‚ꂾ‚ÆA
fnstcw [EBP+08]
‚Æ‚¢‚¤ˆÓ–¡‚ɂȂÁ‚Ä‚µ‚Ü‚Á‚ÄA
fnstcw pCW
‚̈Ӗ¡‚ɂȂÁ‚Ä‚¢‚éB‚‚܂èF
pCW = control_word;
‚ ‚È‚½‚ªA‚â‚肽‚¢‚Ì‚ÍA
*pCW = control_word;
‚¾‚Á‚½‚Ì‚¾‚©‚çAƒAƒZƒ“ƒuƒŠEƒR[ƒh‚ªŠÔˆá‚Á‚Ä‚éB

‚ ‚È‚½‚ªŽwަ‚µ‚½‚Ì‚ÍA
fnstcw [pCW]
‚¾‚Á‚½BŽÀۂɶ¬‚³‚ꂽƒR[ƒh‚ÍA
fnstcw pCW
‚¾‚Á‚½B

VC ‚̃Cƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰‚ÍAƒGƒ‰[‚ào‚³‚¸‚ÉŠÔˆá‚Á‚½ƒR[ƒh‚ð
o‚·‚±‚Æ‚ªØ–¾‚³‚ꂽB

‚±‚ê‚ÆA¸“x‚ª•sˆÀ’è‚È–â‘è‚Æ‚Í‘S‚­•ʂł͂ ‚邯‚ê‚ÇB

234 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:06:05.39 ID:zL1WUjLu.net]
‚·‚Ü‚ñAŠÔˆá‚¢‚ÌC³

>>225
~ > ‚Ç‚¤‚â‚炱‚ꂪŒ´ˆö‚̉”\«‚ªo‚Ä‚«‚½Bi‚Í‚Á‚«‚茾‚Á‚ĉ´‚̃oƒO‚¾‚ªj
~ > ‚Ü‚ ‚±‚ê‚É“–‚½‚Á‚Ä‚¢‚é‚̂ȂçŠmŽÀ‚ɉ´‚̃oƒO‚¾‚µA‚±‚ê‚È‚ç’Òåë‚͇‚Á‚Ä‚µ‚Ü‚¤‚Ì‚¾‚ªB

¡‰ñ‚͉´‚Í‚ ‚­‚܂ʼn´‚Ì–{”ÔƒR[ƒh‚̃fƒoƒbƒO‚ð”O“ª‚É’u‚¢‚Ä‚¢‚ÄA‚±‚Ì”­Œ¾‚¾‚Á‚½B
‚½‚¾‚µ>>192‚ÌÄŒ»ƒR[ƒh‚Åw•s’èƒXƒ^ƒbƒN—̈æx‚ð’Í‚ñ‚Å‚¢‚é‚킯‚à‚È‚­A
ˆê‰žIDE‹N“®‚ƃRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‹N“®‚ł̋““®‚̈Ⴂ‚ðÄŒ»o—ˆ‚Ä‚¢‚é‚킯‚¾‚©‚çA
‚±‚ꂾ‚¯‚ª–â‘è‚ł͂Ȃ¢‚Ì‚àŽ–ŽÀ‚¾B

‰´‚ɂƂÁ‚Ă͈ê‚ÂV‚µ‚¢’mŒ©‚Æ‚µ‚ÄA
EIDE‚©‚ç‹N“®‚µ‚½ê‡AƒXƒ^ƒbƒN‚ª‰Šú‰»‚³‚ê‚é‚Á‚Û‚¢
‚Æ‚¢‚¤‚±‚Æ‚ª•ª‚©‚Á‚½B‚Ƃ͂¢‚¦OS‚Í0fill‚µ‚Ä‚©‚çŠeƒvƒƒZƒX‚Ƀƒ‚ƒŠ‚ð—^‚¦‚é‚Ì‚ÅAŽÀÛ‚ÍA
EƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‹N“®‚È‚çmain‘O‚Éݒ肵‚½‘±‚«‚Å‚»‚̂܂܎ÀsA
EIDE‹N“®‚È‚çmain‘O‚ÉFX‚â‚Á‚Ä0fill‚µ‚ÄŽÀsA
@ˆ½‚¢‚Ímain‘O‚ÉFX‚â‚邱‚Æ‚ª‘½‚­AƒXƒ^ƒbƒN‚ªi‚ÝA(—Ⴆ‚΃fƒoƒbƒK‚ðƒAƒ^ƒbƒ`‚·‚éˆ×)
@Œ‹‰Ê“I‚ÉOS‚ª‰Šú‰»Ï‚݂̗̈悩‚çŽn“®
‚ƂȂÁ‚ĈႢ‚ª”­¶‚·‚邯‚¢‚¤‚Æ‚±‚ë‚©B



235 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:11:52.18 ID:haV9TZ8e.net]
>>226
>³’¼A/7‚̈Ӗ¡‚ª•ª‚©‚ç‚È‚¢‚Ì‚¾‚ªA
ModRM ‚Æ‚ÍA

mod reg r/m
76 543 210

‚̂悤‚ȃIƒyƒ‰ƒ“ƒh‚ðŽw‚µ‚Ä‚¢‚é‚Ì‚¾‚¯‚ÇA/7 ‚ÍAreg‚Ì•”•ª‚ð2i”‚Ì111A
10i”‚Ìu7v‚É‚·‚邯‚¢‚¤ˆÓ–¡B‚±‚̃^ƒCƒv‚̃}ƒVƒ“Œê‚ÍA
mod ttt r/m
‚Æ‚à‘‚©‚ê‚éBttt‚Ì•”•ª‚ÍA–½—߂̎劲•”•ª(ƒjƒ‚ƒjƒbƒN•”•ª)‚É‚æ‚Á‚ĕςí‚éB
•’Ê‚ÍAƒŒƒWƒXƒ^”Ô†‚ð“ü‚ê‚邯‚±‚ë‚ÉA–½—߂̎í—Þ‚ð•\‚·3BIT‚Ì’l‚ð“ü‚ê‚é
Žd—l‚ɂȂÁ‚Ä‚¢‚éB

‚ ‚È‚½‚ªƒCƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰‚ÅVC‚Éo‚³‚¹‚½‚©‚Á‚½ƒR[ƒh‚ÍAˆÓ–¡“I‚É‚ÍA

fnstcw [[EBP+08]]

‚Ȃ̂¾‚ªA[ ] ‚ð“ñd‚É‚µ‚½‚悤‚È‚»‚ñ‚Èx86/x64–½—߂͑¶Ý‚µ‚È‚¢‚Ì‚Å
VC ‚ªƒGƒ‰[‚ào‚³‚¸‚ÉŸŽè‚Ɉêd‚Ì
fnstcw [EBP+08]
‚É‚µ‚Ä‚µ‚Ü‚Á‚½A‚Æ‚¢‚¤Ž–B–{“–‚ÍA

mov edx,[EBP+08]
fnstcw [edx]

236 –¼‘OF

‚Æ‚¢‚¤ƒR[ƒh‚É‚µ‚È‚­‚Ă͂Ȃç‚È‚©‚Á‚½‚Ì‚ÉAVC‚ª‚ ‚éˆÓ–¡‚ł͊Ԉá‚Á‚½B
‚±‚ꂪA’P“Æ‚Ì *.asm ‚ł͂Ȃ­AVC ‚Ì asm {EEE}@‚ªŠëŒ¯‚È——RB
VC ‚Ì asm ‚Í“Á‚Ɋ댯B
[]
[‚±‚±‰ó‚ê‚Ă܂·]

237 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:17:02.07 ID:haV9TZ8e.net]
>>229
>‚½‚¾‚µ>>192‚ÌÄŒ»ƒR[ƒh‚Åw•s’èƒXƒ^ƒbƒN—̈æx‚ð’Í‚ñ‚Å‚¢‚é‚킯‚à‚È‚­A
>ˆê‰žIDE‹N“®‚ƃRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‹N“®‚ł̋““®‚̈Ⴂ‚ðÄŒ»o—ˆ‚Ä‚¢‚é‚킯‚¾‚©‚çA
>‚±‚ꂾ‚¯‚ª–â‘è‚ł͂Ȃ¢‚Ì‚àŽ–ŽÀ‚¾B

‚»‚¤‚¾‚æB¸“x‚ª•Ï‚í‚é‚̂͂ ‚È‚½‚̊ԈႢ‚ł͂Ȃ¢BƒXƒ^ƒbƒN—̈悪0ƒNƒŠƒA
‚³‚ê‚æ‚¤‚ª‚ê‚Ü‚¢‚ªA‚ ‚È‚½‚̃R[ƒhŽ©‘̂ɂ͓Á‚É•sˆÀ’肳‚͂Ȃ¢B
”ñ‰Šú‰»—̈æ‚ðŽQÆ‚µ‚Ä‚¢‚éƒR[ƒh‚ÍŒ©“–‚½‚ç‚È‚¢‚µB

238 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:20:22.27 ID:haV9TZ8e.net]
‹tƒAƒZƒ“ƒuƒ‰Œ‹‰Ê‚ðŒ©‚Ä‚È‚¢‚ÅŒ¾‚¤‚¯‚ÇA‚à‚µAsqrt() ‚ª call•¶‚ÅŠÖ”ŒÄ‚Ño‚µ
‚³‚ê‚Ä‚¢‚é‚ñ‚¾‚Á‚½‚çA‚»‚±‚Ÿ“x‚̈Ⴂ‚ªo‚Ă邩‚à‚µ‚ê‚È‚¢B

239 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:23:20.75 ID:zL1WUjLu.net]
>>228
‚È‚é‚Ù‚ÇA—¹‰ð‚µ‚½B
‚‚܂èA>>210‚Í‘S–Ê“I‚ɊԈႢ‚ÅA³‚µ‚­‚ÍA

Efpu control register ‚Í 0x027F ‚ÅAIDE‚©‚ç‚ೂµ‚­“ǂ߂Ă¢‚é

‚¾‚ÈB


‰´‚ª‚â‚é‚ׂ«‚¾‚Á‚½‚Ì‚Í fnstcw [[cw]] ‚Ȃ̂¾‚ÆŽv‚¤‚ªA‚±‚ê‚ÍSyntaxError‚¾B
‚»‚µ‚ÄA‚±‚ñ‚È–½—߂͂Ȃ¢‚©‚çA
[]“à‚ɕϔ‚ð‘‚©‚¸AƒŒƒWƒXƒ^–¼‚É‚µ‚ëA‚Æ‚¢‚¤‚±‚Æ‚¾‚Á‚½‚Ì‚¾‚ÈB
‘S‚­‚à‚Á‚Ä—¹‰ð‚¾B

VC‚Ì–â‘è‚ł͂Ȃ­‚ÄA
‰´‚ª fnstcw [cw] ‚Æ‘‚¢‚½‚Ì‚ªŠÔˆá‚¢‚ÅA‚»‚ê‚ð‚»‚Ì‚Ü‚ÜƒR[ƒh‚É‚³‚ê‚Ä‚µ‚Ü‚Á‚½‚¾‚¯‚¾‚ÈB
³‚µ‚­‘‚¯‚ÎSyntaxError‚¾‚Á‚½‚Ì‚¾‚µB
‚È‚¨ fnstcw [*cw] ‚àSyntaxError‚¾BŽè“®‚ňê’UƒŒƒWƒXƒ^‚Ɉڂ³‚È‚¢‚Ƒʖڂ¾‚ÈB
‘S‚­‚à‚Á‚Ä>>219‚̃R[ƒh‚ª³‚µ‚¢B

240 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:35:08.59 ID:LrdaMWHl.net]
>>233
>‰´‚ª‚â‚é‚ׂ«‚¾‚Á‚½‚Ì‚Í fnstcw [[cw]] ‚Ȃ̂¾‚ÆŽv‚¤‚ªA‚±‚ê‚ÍSyntaxError‚¾B

‚¿‚å‚Á‚ƈႤB‚ ‚È‚½‚Í‚â‚é‚ׂ«‚±‚Æ‚ð‚¿‚á‚ñ‚Ƴ‚µ‚­A
fnstcw [cw]
‚Æ‘‚¢‚½B‚µ‚©‚µAcw=[ebp+8]‚Ȃ̂ÅA‚±‚ê‚ÍA
fnstcw [[ebp+8]]
‚Æ‚¢‚¤uˆÓ–¡v‚ɂȂéB‚Å‚àAx86/x64‚̃}ƒVƒ“Œê‚ɂ͂±‚ñ‚È[ ]‚ð“ñd‚É‚µ‚½
ƒIƒyƒ‰ƒ“ƒh‚Í‘¶Ý‚µ‚È‚¢‚Ì‚ÅAVC‚ª–³’f‚ÅŸŽè‚É[ ]‚ðˆêd‚É‚µ‚ÄA
fnstcw [ebp+8]
‚ɉü•Ï‚µ‚Ä‚µ‚Ü‚Á‚½B

**(ebp+8) = control_word;

‚Æ‚µ‚È‚­‚Ă͂Ȃç‚È‚¢‚Ì‚ÉAVC‚ªŸŽè‚ÉA
*(ebp+8) = control_word;

‚Æ‚µ‚½‚Æ‚¢‚¤‚±‚ÆB

241 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:36:04.13 ID:zL1WUjLu.net]
>>230-231
—¹‰ð‚¾B‚ ‚肪‚Æ‚¤B

>>232
‚»‚Ì•”•ª‚Ì‹tƒAƒZƒ“ƒuƒ‰‚͈ȉº‚Ì’Ê‚èB
•’Ê‚Écall‚³‚ê‚Ä‚¢‚éB(s”ƒI[ƒo[‚È‚Ì‚ÅØ‚邪)

‚½‚¾‚µA
> ‚»‚±‚Ÿ“x‚̈Ⴂ‚ªo‚Ă邩‚à‚µ‚ê‚È‚¢
‚Ƃ̌q‚ª‚肪‚æ‚­‚©‚ç‚È‚¢B
sqrt()‚Åcall‚³‚ê‚邯AƒXƒ^ƒbƒN‚ª‰ü•Ï‚³‚ê‚éB‚¨‚»‚ç‚­ƒf[ƒ^ˆË‘¶‚©H
‚Ȃ疢‰Šú‰»‚̃Xƒ^ƒbƒN‚ð’݂͂És‚Á‚Ä‚¢‚éƒR[ƒh‚ª—L‚ê‚΃oƒO‚éB
‚½‚¾‚µ¡‰ñ‚ÌwÄŒ»ƒR[ƒhx‚Í‚±‚ÌŒÀ‚è‚ł͂Ȃ¢B
i‰´‚Ì–{”ÔƒR[ƒh‚Í‚³‚Ä‚¨‚«j

242 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:37:19.30 ID:zL1WUjLu.net]
>>232
‹tƒAƒZƒ“ƒuƒ‰

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]

243 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:37:34.94 ID:zL1WUjLu.net]
>>232
‹tƒAƒZƒ“ƒuƒ‰i‘±‚«j

if (regulate) for (int i=0;i<num;i++) r[i] = (T)(r[i]/norm);
00000078 0F B6 45 08 movzx eax,byte ptr [ebp+8]
0000007c 85 C0 test eax,eax
0000007e 74 25 je 000000A5
00000080 33 D2 xor edx,edx
00000082 89 55 EC mov dword ptr [ebp-14h],edx
00000085 90 nop
00000086 EB 03 jmp 0000008B
00000088 FF 45 EC inc dword ptr [ebp-14h]
0000008b 8B 45 EC mov eax,dword ptr [ebp-14h]
0000008e 3B 45 FC cmp eax,dword ptr [ebp-4]
00000091 7D 12 jge 000000A5
00000093 8B 45 F8 mov eax,dword ptr [ebp-8]
00000096 8B 55 EC mov edx,dword ptr [ebp-14h]
00000099 DD 45 F0 fld qword ptr [ebp-10h]
0000009c DC 3C D0 fdivr qword ptr [eax+edx*8]
0000009f DD 1C D0 fstp qword ptr [eax+edx*8]
000000a2 90 nop
000000a3 EB E3 jmp 00000088
return norm;
000000a5 DD 45 F0 fld qword ptr [ebp-10h]
000000a8 DD 5D E0 fstp qword ptr [ebp-20h]

244 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:40:36.14 ID:LrdaMWHl.net]
>>235
‚æ‚­Œ©‚邯AŬ(?)‚ÌŽÀŒ±ƒR[ƒh‚Å‚Í sqrt() ‚ªŽg‚í‚ê‚Ä‚¢‚È‚©‚Á‚½B
ƒXƒ}ƒ“B



245 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:42:54.99 ID:zL1WUjLu.net]
>>234
‚ ‚ A‚È‚é‚Ù‚ÇA—¹‰ðB

246 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:49:54.65 ID:zL1WUjLu.net]
>>238
‚¢‚âA‰´‚ª’ñ‹Ÿ‚µ‚½>>192‚̃\[ƒX‚È‚çŽg‚í‚ê‚Ă邼B
>>201‚̃\[ƒX‚ł͎g‚í‚ê‚ĂȂ¢‚ªB

‚½‚¾‚Ü‚ A”Þ(200)‚ªsqrt‚𗎂Ƃµ‚½‚Ì‚à•ª‚©‚ç‚È‚­‚͂Ȃ¢B
Œë·‚ª¶‚¶‚é’Êí‚ÍŒ…—Ž‚¿‚¾‚©‚çA‚±‚Ìꇂ͓–‘RϘa•”•ª‚ª‰ö‚µ‚¢B
‚ ‚ç‚©‚¶‚ߔނ͂»‚¤‚È‚é‚Æ•ª‚©‚Á‚Ä‚¢‚Ä‚»‚ê‚𗎂ƂµA—\’è’²˜a“I‚ÈŒ‹˜_‚É‚½‚ǂ蒅‚¢‚Ä‚µ‚Ü‚Á‚½B
‚»‚ꂪ”ނ̊ԈႢ‚¾‚Á‚½A‚Æ‚¢‚¤‚±‚ÆB

‰´‚Ío—ˆ‚邾‚¯Œ³‚̃\[ƒX‚̂܂܂ŒÇÕ‚µ‚悤‚Æ‚µ‚Ä‚¢‚éB
Œ³‚̃\[ƒX‚ÌŠY“–ƒP[ƒX‚Æ—£‚ê‚Ä‚µ‚Ü‚Á‚Ă͈Ӗ¡‚ª‚È‚¢‚©‚çB
‚»‚µ‚ÄŒ³ƒ\[ƒX‚Å‚Ísqrt‚ðŽg‚Á‚Ä‚¢‚éB

247 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:53:58.12 ID:/oSJzlqn.net]
‚½‚Ô‚ñ2008‚ÌÅ“K‰»ƒ~ƒX‚¾‚ÆŽv‚¤B
static double norm = 0;// ©"static"‚ð’ljÁ‚·‚é
‚É‚·‚邯‚©AÅ“K‰»ƒIƒvƒVƒ‡ƒ“‚ð‚¢‚¶‚邯
Release/ƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚©‚ç‚Ì‹N“®‚Å‚à
0x1ff68ddfb62221dd‚ɂȂé

248 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:54:10.71 ID:LrdaMWHl.net]
>>238
‚ ‚ B‚Ü‚½’ù³B

sqrt()‚ªŽg‚í‚ê‚Ä‚¢‚È‚¢‚Ì‚ÍA>>201, >>202, >>203, >>204 ‚ÌꇂÅA
‚»‚ê‚ÍAƒ‹[ƒv“à‚Éfprintf()‚ð“ü‚ꂽꇂƓü‚ê‚È‚¢ê‡‚Æ‚ÅA
x87 fpuƒŒƒWƒXƒ^‚Ìst(0)`st(7)‚ðŽg‚¤uŠúŠÔv‚ª•Ï‚í‚邽‚ß‚É 80BIT‚©‚ç
64BIT‚Ö‚Ì‘‚«–ß‚µŠÛ‚߂̖â‘è‚Ì‚½‚߂ɸ“x‚ª•Ï‚í‚Á‚Ä‚¢‚邾‚¯‚¾‚Á‚½B

ˆê•ûA‚ ‚È‚½‚ªŽw“E‚µ‚½ >>192 ‚Å‚ÍA‚¿‚á‚ñ‚Æ sqrt() ŠÖ”‚ªŽg‚í‚ê‚Ä‚¢‚ÄA
‚»‚ꂾ‚ÆAIDE‚©‚ç‚Ì‹N“®‚ƃRƒ}ƒ“ƒhEƒvƒƒ“ƒvƒg‚©‚ç‚Ì‹N“®‚Æ‚ÅA¸“x‚ª•Ï
‚í‚Á‚Ä‚­‚邯B‚»‚µ‚ÄA‚»‚Ìꇂ̋tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚Í >>236 ‚̂悤‚É
sqrt() ŠÖ”‚ª‚»‚Ìê‚Å x87 fpu ‚Ì fsqrt –½—ß‚ðŽg‚킸‚ÉAcall •¶‚É‚æ‚Á‚Ä
ŽÀÛ‚É–{“–‚̃TƒuEƒ‹[ƒ`ƒ“‚ðŒÄ‚Ño‚µ‚Ä‚¢‚邯B

‚±‚ê‚Í‚Æ‚Ä‚à‹»–¡[‚¢B‚»‚̃TƒuEƒ‹[ƒ`ƒ“‚Ì’†‚ªAŽž‚Æê‡‚É‚æ‚Á‚Ä
¸“x‚ª•Ï‚í‚Á‚Ä‚­‚邿‚¤‚È‘‚«•û‚ð‚³‚ê‚Ä‚¢‚é‰Â”\«‚ªŒ©‚¦‚Ä‚«‚½B

249 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 16:56:42.67 ID:LrdaMWHl.net]
>>240
>‚¢‚âA‰´‚ª’ñ‹Ÿ‚µ‚½>>192‚̃\[ƒX‚È‚çŽg‚í‚ê‚Ă邼B
> >>201‚̃\[ƒX‚ł͎g‚í‚ê‚ĂȂ¢‚ªB

—¹‰ðB

–â‘è‚ð؂蕪‚¯‚邽‚ßAsqrt() ‚ðŽg‚í‚È‚©‚Á‚½ê‡‚Ì Release”łłÌA
IDE‹N“®‚ƃRƒ}ƒ“ƒh‚’ƒ‰ƒCƒ“‹N“®‚̸“x‚̈Ⴂ‚ðŽÀŒ±‚µ‚Ă݂ė~‚µ‚¢B

250 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 17:02:35.56 ID:LrdaMWHl.net]
‚¿‚å‚Á‚Æ‚µ‚΂炭A‚±‚±‚𗣂ê‚éB

251 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 17:22:07.21 ID:zL1WUjLu.net]
>>241
Œ»ÛŠm”F‚µ‚½B‚±‚¿‚ç‚Å‚àÄŒ»‚µ‚½B
‹tƒAƒZƒ“ƒuƒ‹‚ÍAˆÈ‰ºB(ŠÌS‚̃‹[ƒv•”•ª‚ÍŽŸƒŒƒX“àj

³’¼Afld/fmul/fadd/fstp‚̃‹[ƒv•”•ª‚͕ςí‚炸A
norm‚̃AƒhƒŒƒX‚ª [ebp-10h]i‚‚܂èƒ[ƒJƒ‹j‚©‚ç
ds:[00A4AD40h]i‚‚܂èƒOƒ[ƒoƒ‹j‚ɕςí‚Á‚½‚¾‚¯‚Å‚ ‚èA
‚±‚ê‚ÅŒ‹‰Ê‚ª•Ï‚í‚é‚̂͂©‚È‚èŠï–­‚È‹C‚à‚·‚邪A‰½‚©Œ©—Ž‚Æ‚µ‚ª‚ ‚é‚Ì‚©‚àB

>>241‹tƒAƒZƒ“ƒuƒ‹(static•t‰Á”Åj
template<typename T> static double calc_norm_and_regulate(int num, T* r, bool regulate){ // <float> for debug.
static double norm = 0;
for (int i=0;i<num;i++) norm += (double)r[i] * (double)r[i];
00000000 55 push ebp
00000001 8B EC mov ebp,esp
00000003 83 EC 20 sub esp,20h
00000006 89 4D FC mov dword ptr [ebp-4],ecx
00000009 89 55 F8 mov dword ptr [ebp-8],edx
0000000c 83 3D 14 2E 38 00 00 cmp dword ptr ds:[00382E14h],0
00000013 74 05 je 0000001A
00000015 E8 FF 52 30 68 call 68305319
0000001a 33 D2 xor edx,edx
0000001c 89 55 F0 mov dword ptr [ebp-10h],edx
0000001f 33 D2 xor edx,edx
00000021 89 55 F4 mov dword ptr [ebp-0Ch],edx
00000024 D9 EE fldz
00000026 DD 5D E8 fstp qword ptr [ebp-18h]
00000029 33 D2 xor edx,edx
0000002b 89 55 F0 mov dword ptr [ebp-10h],edx
0000002e 90 nop
0000002f EB 03 jmp 00000034

252 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 17:22:29.32 ID:zL1WUjLu.net]
>>241‹tƒAƒZƒ“ƒuƒ‹i‘±‚«j(static•t‰Á”Åj

00000031 FF 45 F0 inc dword ptr [ebp-10h]
00000034 8B 45 F0 mov eax,dword ptr [ebp-10h]
00000037 3B 45 FC cmp eax,dword ptr [ebp-4]
0000003a 7D 21 jge 0000005D
0000003c 8B 45 F8 mov eax,dword ptr [ebp-8]
0000003f 8B 55 F0 mov edx,dword ptr [ebp-10h]
00000042 DD 04 D0 fld qword ptr [eax+edx*8]
00000045 8B 45 F8 mov eax,dword ptr [ebp-8]
00000048 8B 55 F0 mov edx,dword ptr [ebp-10h]
0000004b DC 0C D0 fmul qword ptr [eax+edx*8]
0000004e DC 05 40 AD A4 00 fadd qword ptr ds:[00A4AD40h]
00000054 DD 1D 40 AD A4 00 fstp qword ptr ds:[00A4AD40h]
0000005a 90 nop
0000005b EB D4 jmp 00000031
norm = sqrt(norm);
0000005d DD 05 40 AD A4 00 fld qword ptr ds:[00A4AD40h]
00000063 83 EC 08 sub esp,8
00000066 DD 1C 24 fstp qword ptr [esp]
00000069 E8 0E 50 88 FF call FF88507C
0000006e DD 5D E0 fstp qword ptr [ebp-20h]
00000071 DD 45 E0 fld qword ptr [ebp-20h]
00000074 DD 1D 40 AD A4 00 fstp qword ptr ds:[00A4AD40h]

253 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 17:22:46.06 ID:zL1WUjLu.net]
>>241‹tƒAƒZƒ“ƒuƒ‹i‘±‚«j(static•t‰Á”Åj
if (regulate) for (int i=0;i<num;i++) r[i] = (T)(r[i]/norm);
0000007a 0F B6 45 08 movzx eax,byte ptr [ebp+8]
0000007e 85 C0 test eax,eax
00000080 74 28 je 000000AA
00000082 33 D2 xor edx,edx
00000084 89 55 F4 mov dword ptr [ebp-0Ch],edx
00000087 90 nop
00000088 EB 03 jmp 0000008D
0000008a FF 45 F4 inc dword ptr [ebp-0Ch]
0000008d 8B 45 F4 mov eax,dword ptr [ebp-0Ch]
00000090 3B 45 FC cmp eax,dword ptr [ebp-4]
00000093 7D 15 jge 000000AA
00000095 8B 45 F8 mov eax,dword ptr [ebp-8]
00000098 8B 55 F4 mov edx,dword ptr [ebp-0Ch]
0000009b DD 05 40 AD A4 00 fld qword ptr ds:[00A4AD40h]
000000a1 DC 3C D0 fdivr qword ptr [eax+edx*8]
000000a4 DD 1C D0 fstp qword ptr [eax+edx*8]
000000a7 90 nop
000000a8 EB E0 jmp 0000008A
return norm;
000000aa DD 05 40 AD A4 00 fld qword ptr ds:[00A4AD40h]
000000b0 DD 5D E8 fstp qword ptr [ebp-18h]
}
000000b3 DD 45 E8 fld qword ptr [ebp-18h]
000000b6 8B E5 mov esp,ebp
000000b8 5D pop ebp
000000b9 C2 04 00 ret 4

254 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 17:35:35.70 ID:zL1WUjLu.net]
>>243
‚Ü‚¾ˆÙ‚È‚Á‚½o—Í‚ª“¾‚ç‚ꂽB
‚±‚̈Ӗ¡‚Å‚Í200‚ªsqrt‚ðŠO‚µ‚½”»’f‚ͳ‚µ‚©‚Á‚½B
(”Þ‚Í‚»‚±‚©‚炳‚ç‚Ƀ‹[ƒv‰ñ”‚ðŒÅ’肵‚Ä‚µ‚Ü‚Á‚½‚Ì‚ªŠÔˆá‚¢‚¾‚Á‚½)

191ƒ\[ƒX‚ðˆÈ‰º‚É•ÏX‚µ‚½B(sqrt‚ðƒRƒƒ“ƒgƒAƒEƒgj
‚‚¢‚Å‚É Console::Write(String::Format("{0:E6}, {0:E30}\r\n",norm)); ‚Ìo—Í‚à•t‚¯‚Ä‚¨‚­B

ƒ\[ƒXF
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;
}

Œ‹‰ÊFiReleaseƒrƒ‹ƒh/ƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚©‚ç‚Ì‹N“®j
0.000000, 0x0007f2c44dfff8f2
1.105348E-308, 1.105348254058510600000000000000E-308

Œ‹‰ÊFiReleaseƒrƒ‹ƒh/IDE‚©‚ç‚Ì‹N“®ADebugƒrƒ‹ƒh‚Í‹N“®•û–@‚É‚æ‚炸‚±‚¿‚ç)
0.000000, 0x0007f2c44dfff8f1
1.105348E-308, 1.105348254058510100000000000000E-308


>>244
—¹‰ðB‚¢‚¸‚ê‚É‚µ‚Ä‚à•‚©‚Á‚Ä‚éB
‚±‚¿‚ç‚àŒã30•ª‚­‚ç‚¢‚Å‚¿‚å‚Á‚Æ—£‚ê‚é—\’èB



255 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 18:30:34.19 ID:HF0YmRsW.net]
>>213
‚Ù‚ñ‚»‚ê

256 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 20:54:27.39 ID:zL1WUjLu.net]
>>241
‚³‚ÄÄŒ©‚µ‚½‚ªA‚â‚Í‚èstatic‚¾‚¯‚Å’¼‚é——R‚Í•ª‚©‚ç‚È‚¢B
‚È‚¨AÅ“K‰»ƒ~ƒX‚ÌꇂÍA‹tƒAƒZƒ“ƒuƒ‰‚ð“ǂ߂Εª‚©‚éB
¡‚̂Ƃ±‚ë‚»‚ê‚ł͂Ȃ¢B

ˆê‰žA>>192ƒ\[ƒX‚Ìtemplate•”‚Ì‹tƒAƒZƒ“ƒuƒ‹‚ðã‚°‚Ä‚¨‚­Bi‚½‚¾‚µd•¡‚·‚é‚̂œª‚Ì‚Ýj
“ª‚Í‚±‚êB‘±‚«‚ª>>236,237B

template<typename T> static double calc_norm_and_regulate(int num, T* r, bool regulate){ // <float> for debug.
double norm = 0;
00000000 55 push ebp
00000001 8B EC mov ebp,esp
00000003 83 EC 28 sub esp,28h
00000006 89 4D FC mov dword ptr [ebp-4],ecx
00000009 89 55 F8 mov dword ptr [ebp-8],edx
0000000c 83 3D 14 2E 76 00 00 cmp dword ptr ds:[00762E14h],0
00000013 74 05 je 0000001A
00000015 E8 FF 52 1B 68 call 681B5319
0000001a 33 D2 xor edx,edx
0000001c 89 55 E8 mov dword ptr [ebp-18h],edx
0000001f 33 D2 xor edx,edx
00000021 89 55 EC mov dword ptr [ebp-14h],edx
00000024 D9 EE fldz
00000026 DD 5D F0 fstp qword ptr [ebp-10h]
00000029 D9 EE fldz
0000002b DD 5D E0 fstp qword ptr [ebp-20h]
0000002e D9 EE fldz
00000030 DD 5D F0 fstp qword ptr [ebp-10h]

257 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 21:25:23.90 ID:zL1WUjLu.net]
>>220
>>222
/MT‚Æ/clr‚Í“¯Žž‚ÉŽw’èo—ˆ‚È‚¢‚炵‚¢B(error D8016)
/MTd‚à“¯‚¶‚­–³—B

‚à‚¤ˆê‚ /MDd ‚Á‚Ă̂ª‚ ‚é‚©‚玎‚µ‚Ă݂½B

/MDd‚ÌŒ‹‰ÊF
Releaseƒrƒ‹ƒh‚ŃRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‹N“®‚ÌŽž‚Ì‚Ý ****deA
Releaseƒrƒ‹ƒh‚ÅIDE‚©‚ç‚Ì‹N“®‚¾‚Æ ***ddBiDebugƒrƒ‹ƒh‚Í‹N“®•û–@‚ð–â‚킸‚±‚Á‚¿j
(/MD‚Æ‘S‚­‹““®‚Í“¯‚¶)


‚±‚ê‚Å—LŒø‚ÈŽw“E‚ɂ‚¢‚Ă͑S‚ĉñ“š‚µ‚Ä‚é‚©‚ÈH
Œ©—Ž‚Æ‚µ‚ª—L‚ê‚ÎŽw“E‚æ‚낵‚­B
i‹K§‚Ɉø‚Á‚©‚©‚Á‚½‚̂Œx‚­‚È‚Á‚Ä‚·‚Ü‚ñj


¡‚̂Ƃ±‚ëA‰Â”\«‚ª‚ ‚é‚͈̂ȉº‚©H

EReleaseƒrƒ‹ƒh‚ðƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚©‚ç‹N“®‚µ‚½‚Æ‚«‚݂̂Ȃº‚©¸“x‚ª‚‚¢
@(>>201‚©‚猋‰Ê“I‚ÉŒŸo‚³‚ꂽB¡‚̂Ƃ±‚븓x‚ª‚‚¢‚Æ‚«‚Æ“¯‚¶‹““®‚ð‚µ‚Ä‚¢‚éˆ×j
EReleaseƒrƒ‹ƒh‚àIDE‚©‚ç‹N“®‚·‚ê‚ÎŒ‹‰Ê“I‚ɃXƒ^ƒbƒN‚ª0‰Šú‰»‚³‚ê‚Ä‚¢‚éó‘ԂɂȂÁ‚Ä‚¨‚èA
@‰´‚Ì–{”ÔƒvƒƒOƒ‰ƒ€‚ÉŠÖ‚µ‚Ă͂±‚±‚É“–‚½‚éƒoƒO‚ª‚ ‚éH(>>229)
@(‚½‚¾‚µ‚±‚ê‚Í>>192‚ɂ͊Y“–‚µ‚È‚¢j

258 –¼‘OF240 mailto:sage [2018/09/16(“ú) 21:43:04.47 ID:/oSJzlqn.net]
.net‚Ìê‡AƒfƒoƒbƒK”z‰º‚Å‚Í(ƒfƒoƒbƒO‚Ì‚½‚ß)ˆá‚¤ƒR[ƒh‚ðŽÀs‚µ‚Ä‚¢‚邿‚¤‚È‹C‚ª‚·‚éB
ƒfƒoƒbƒK‚Ì‹tƒAƒZƒ“ƒuƒ‹•\ަ‚Æ‚©asmo—͂͂ ‚܂蓖‚ĂɂȂç‚È‚¢‚悤‚È‹C‚à‚·‚éB
ƒ‹[ƒv•”•ª‚¾‚¯‚ÇAƒŒƒWƒXƒ^‚݂̂ň—‚·‚é‚©Aƒƒ‚ƒŠ‚ðŽg—p‚·‚é‚©‚Ÿ“x‚ª•Ï‚í‚é‚Ì‚©‚àB
‚»‚à‚»‚àA‚Ç‚Á‚¿‚ª³‚µ‚¢‚Ì‚©‚æ‚­‚í‚©‚ç‚ñ‚¯‚Ç...
ƒ‹[ƒv•”•ª‚ÌŠÖ”‚ð#pragma unmanaged‚·‚邯Œ‹‰Ê‚ª•Ï‚í‚é‚Å‚»‚ꂪ³‚µ‚¢‚Ì‚©‚àB

259 –¼‘OF240 mailto:sage [2018/09/16(“ú) 21:43:27.78 ID:/oSJzlqn.net]
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

260 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 22:27:34.58 ID:zL1WUjLu.net]
>>252
‚Ƃ肠‚¦‚¸—Ž‚¿’…‚¯Bˆê‚‚¸‚Âs‚±‚¤B

> ƒ‹[ƒv•”•ª‚ÌŠÖ”‚ð#pragma unmanaged‚·‚邯Œ‹‰Ê‚ª•Ï‚í‚é‚Å‚»‚ꂪ³‚µ‚¢‚Ì‚©‚àB
‚±‚¿‚ç‚Å‚àŠm”F‚µ‚½B
calc_norm_and_regulate‚ðunmanagedŠÖ”‚É‚·‚邯Aˆá‚¢‚͂Ȃ­‚È‚éB
(Releaseƒrƒ‹ƒh‚ÌM‚ðƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚Å‹N“®‚µ‚½Û‚É‚àA****dd‚ÌŒ‹‰Ê‚ƂȂéj

‚½‚¾‚µ‚±‚¿‚ç‚Ì‹tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚͈ȉº‚¾B(fld/fmul/fadd/fstp‚Å‚ ‚邱‚ƂɒˆÓj
for (int i=0;i<num;i++) norm += (double)r[i] * (double)r[i];
0007272C C7 45 F4 00 00 00 00 mov dword ptr [i],0
00072733 EB 09 jmp `anonymous namespace'::calc_norm_and_regulate<double>+1Eh (7273Eh)
00072735 8B 45 F4 mov eax,dword ptr [i]
00072738 83 C0 01 add eax,1
0007273B 89 45 F4 mov dword ptr [i],eax
0007273E 8B 4D F4 mov ec

261 –¼‘OFx,dword ptr [i]
00072741 3B 4D 08 cmp ecx,dword ptr [num]
00072744 7D 1A jge `anonymous namespace'::calc_norm_and_regulate<double>+40h (72760h)
00072746 8B 55 F4 mov edx,dword ptr [i]
00072749 8B 45 0C mov eax,dword ptr [r]
0007274C 8B 4D F4 mov ecx,dword ptr [i]
0007274F 8B 75 0C mov esi,dword ptr [r]
00072752 DD 04 D0 fld qword ptr [eax+edx*8]
00072755 DC 0C CE fmul qword ptr [esi+ecx*8]
00072758 DC 45 F8 fadd qword ptr [norm]
0007275B DD 5D F8 fstp qword ptr [norm]
0007275E EB D5 jmp `anonymous namespace'::calc_norm_and_regulate<double>+15h (72735h)
[]
[‚±‚±‰ó‚ê‚Ă܂·]

262 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 22:33:32.07 ID:zL1WUjLu.net]
>>253
‚»‚¿‚ç‚Ì‹tƒAƒZƒ“ƒuƒ‹‚͈ȉº‚̈Ⴂ‚ªo‚Ă邾‚ëB
staticӁF fld/fmul/fadd/fstp
”ñstatic”ÅF fld/fmul/faddp (fstp‚ª–³‚¢j
‚±‚Ì”ñstatic”Å‚Ìê‡AŠg’£”{¸“x(80bit)‚ʼn‰ŽZ‚³‚ê‚é‚©‚縓x‚ª‚‚¢‚±‚ƂɂȂèA
static”łƂ̉‰ŽZŒ‹‰Ê‚ɈႢ‚ªo‚é‚Ì‚àŽd—l’Ê‚è‚È‚ñ‚¾‚æB(‚±‚ê‚Í>>201‚Æ“¯‚¶ŠÔˆá‚¢)

ˆê‰žAfstp‚É‚à80bit”ł͂ ‚Á‚ÄAIntel‚̃}ƒjƒ…ƒAƒ‹‚É‚æ‚邯ˆÈ‰ºB
> ƒIƒyƒR[ƒh–½—ßà–¾
> D9 /2 FST m32fp ST(0) ‚ðm32fp ‚ɃRƒs[‚·‚éB
> DD /2 FST m64fp ST(0) ‚ðm64fp ‚ɃRƒs[‚·‚éB
> DD D0+i FST ST(i) ST(0) ‚ðST(i) ‚ɃRƒs[‚·‚éB
> D9 /3 FSTP m32fp ST(0) ‚ðm32fp ‚ɃRƒs[‚µAƒŒƒWƒXƒ^ƒXƒ^ƒbƒN‚ðƒ|ƒbƒv‚·‚éB
> DD /3 FSTP m64fp ST(0) ‚ðm64fp ‚ɃRƒs[‚µAƒŒƒWƒXƒ^ƒXƒ^ƒbƒN‚ðƒ|ƒbƒv‚·‚éB
> DB /7 FSTP m80fp ST(0) ‚ðm80fp ‚ɃRƒs[‚µAƒŒƒWƒXƒ^ƒXƒ^ƒbƒN‚ðƒ|ƒbƒv‚·‚éB
> DD D8+i FSTP ST(i) ST(0) ‚ðST(i) ‚ɃRƒs[‚µAƒŒƒWƒXƒ^ƒXƒ^ƒbƒN‚ðƒ|ƒbƒv‚·‚éB
‚‚܂èŒN‚Ìstatic”Å
> 0000001f DD 1D 00 30 CC 00 fstp qword ptr ds:[00CC3000h]
‚Å‚Í FSTP /3 m64fp [disp32] ‚Å‚ ‚èA‚»‚±‚Å64biti”{¸“xj‚ÉŠÛ‚ß‚ç‚ê‚Ä‚éB
‚¾‚©‚烌ƒWƒXƒ^(80bit=Šg’£”{¸“xj‚ʼn‰ŽZ‚³‚ê‚é”ñstatic”łƌ‹‰Ê‚ªˆÙ‚È‚éB
static”Å‚Ìsftp‚ª DB /7 m80fp ‚È‚çŒë·‚Ío‚È‚¢‚Í‚¸‚È‚ñ‚¾‚æBiC‚łǂ¤‘‚­‚Ì‚©‚Í’m‚ç‚ñj

‚¾‚©‚ç>>253‚Ìꇂ̌뷂ȂçAŽd—l’Ê‚è‚È‚ñ‚¾‚æB(•Еû‚ª”{¸“xA‚à‚¤•Еû‚ÍŠg’£”{¸“xj
‚½‚¾‚µA>>192‚Í‹tƒAƒZƒ“ƒuƒ‹(>>236)‚ðŒ©‚éŒÀ‚è‚»‚ê‚ÉŠY“–‚µ‚È‚¢‚µA(—¼•û‚Æ‚à”{¸“xj
¡‰ñ‚̉´‚Ìã‹L‹tƒAƒZƒ“ƒuƒ‹i>>254A’†g‚ÍŒN‚ÌŽw“E’Ê‚èunmanaged‚É‚µ‚½‚¾‚¯j‚àŠY“–‚µ‚È‚¢B(—¼•û‚Æ‚à”{¸“xj
‚»‚µ‚Ä253‚͉½ŒÌ‚©’¼‚Á‚Ä‚µ‚Ü‚Á‚½B

263 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 22:34:16.44 ID:zL1WUjLu.net]
>>253
> .net‚Ìê‡AƒfƒoƒbƒK”z‰º‚Å‚Í(ƒfƒoƒbƒO‚Ì‚½‚ß)ˆá‚¤ƒR[ƒh‚ðŽÀs‚µ‚Ä‚¢‚邿‚¤‚È‹C‚ª‚·‚éB
> ƒfƒoƒbƒK‚Ì‹tƒAƒZƒ“ƒuƒ‹•\ަ‚Æ‚©asmo—͂͂ ‚܂蓖‚ĂɂȂç‚È‚¢‚悤‚È‹C‚à‚·‚éB
‚±‚ê‚͉´‚à‘Š“–‹^‚Á‚Ä‚¢‚é‚Ì‚¾‚ªA¡‚̂Ƃ±‚ëK”ö‚ð’͂߂Ȃ¢B
ILspy‚¾‚Á‚¯HŠO•”‚Ì‹tƒAƒZƒ“ƒuƒ‹ƒc[ƒ‹Žg‚¦‚΃`ƒFƒbƒNo—ˆ‚é‚Ì‚©‚ÈH

‚¢‚¸‚ê‚É‚µ‚Ä‚àA>>252‚ÌŽw“E
Eunmanaged‚É‚·‚ê‚Î’¼‚é
‚Ì‚àŽ–ŽÀ‚¾‚µA‹tƒAƒZƒ“ƒuƒ‹‚ðŒ©‚éŒÀ‚èA‚±‚ê‚ðà–¾o—ˆ‚é——R‚à‚È‚¢‚Ì‚àŽ–ŽÀB

264 –¼‘OF240 mailto:sage [2018/09/16(“ú) 23:13:48.62 ID:/oSJzlqn.net]
> ‚¾‚©‚ç>>253‚Ìꇂ̌뷂ȂçAŽd—l’Ê‚è‚È‚ñ‚¾‚æB(•Еû‚ª”{¸“xA‚à‚¤•Еû‚ÍŠg’£”{¸“xj
‚»‚¤‚È‚ÌH@‚±‚ꂪŽd—l’Ê‚è‚È‚çstatic”łł̈Ⴂ‚ÍŽd—l’Ê‚è‚Æ‚¢‚¤‚±‚ƂɂȂéB
252‚ÍRelease”Å‚ðƒRƒ“ƒ\[ƒ‹‚ÅŽÀs‚µ‚½‚Æ‚«‚Ì‹tƒAƒZƒ“ƒuƒ‹Œ‹‰ÊB
‚æ‚Á‚ÄARelease”Å‚ðƒRƒ“ƒ\[ƒ‹‚ÅŽÀs‚µ‚½‚Æ‚«‚Ì‚Ý(‚½‚Ü‚½‚Ü)ƒŒƒWƒXƒ^(80ƒrƒbƒg)‚ł̉‰ŽZ‚ɂȂé‚Ì‚ÅA
ŒvŽZŒ‹‰Ê‚ª•Ï‚í‚é‚̂͂â‚ނ𓾂Ȃ¢‚Æ‚¢‚¤Œ‹˜_‚ɂȂé‚Ì‚¾‚ª...

‚¿‚Ȃ݂ÉA235‚ÍDebugƒ‚[ƒh‚ŃRƒ“ƒpƒCƒ‹‚µAƒfƒoƒbƒK”z‰º‚Ì‹tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚Å‚µ‚åB



265 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 23:24:30.83 ID:zL1WUjLu.net]
>>257
> 252‚ÍRelease”Å‚ðƒRƒ“ƒ\[ƒ‹‚ÅŽÀs‚µ‚½‚Æ‚«‚Ì‹tƒAƒZƒ“ƒuƒ‹Œ‹‰ÊB
‚»‚ê‚͂ǂ¤‚â‚Á‚Ä“¾‚½‚ÌH‰´‚Í‚»‚ꂪo—ˆ‚È‚¢‚©‚碂Á‚Ä‚éB

> ‚¿‚Ȃ݂ÉA235‚ÍDebugƒ‚[ƒh‚ŃRƒ“ƒpƒCƒ‹‚µAƒfƒoƒbƒK”z‰º‚Ì‹tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚Å‚µ‚åB
235‚ÍAIDEã‚ÅReleaseƒ‚[ƒh‚ÅF5‚Å‹N“®‚µAƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚𓖂ĂĎ~‚߂ċtƒAƒZƒ“ƒuƒ‹‚µ‚½Œ‹‰ÊB
‰´‚ª“\‚Á‚Ä‚é‹tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚Í‘S‚Ä‚±‚Ì•û–@‚ÅAIDE‚Å•\ަ‚³‚ê‚Ä‚¢‚é‚à‚ÌB
‚¾‚©‚çIDE‚Ì•\ަ‚ª‚¨‚©‚µ‚©‚Á‚½‚ç˜b‚ª‘S•”‚¨‚©‚µ‚­‚È‚éB

ŒN‚ªIDE‚©‚ç“Æ—§‚µ‚Ä‹tƒAƒZƒ“ƒuƒ‹o—ˆ‚Ä‚¢‚é‚̂ȂçA‚»‚Ì•û–@‚ð’m‚肽‚¢B
‚±‚¿‚ç‚Å‚àŽŽ‚·B


‚È‚¨ILSpyAƒOƒ_ƒOƒ_Œ¾‚킸‚ÉŽŽ‚µ‚Ă݂½‚ªA
“–‚½‚è‘O‚¾‚ªmanaged code ‚¾‚ÆIL‚ªo‚é(x86‚ł͂Ȃ¢j‚Ì‚ÅA
‰´‚Á‚Ī–{“I‚ÉŠÔˆá‚Á‚Ä‚½‚©‚àH
¡‚Ü‚Åx86‚̃AƒZƒ“ƒuƒ‰‚Å‹c˜_‚µ‚Ä‚½‚¯‚ÇA‚±‚ê‚Á‚Ä .NET ƒAƒvƒŠ‚ɂ͓¯«‚³‚ê‚Ä‚¢‚È‚¢‚Æ‚¢‚¤ƒIƒ`H
(‚Ü‚ ‚»‚Ìꇂ͌N‚ª‚â‚Á‚Ä‚¢‚éŠO•”‹tƒAƒZƒ“ƒuƒ‹‚ª’Pƒ‚É‚Ío—ˆ‚È‚¢‚Í‚¸‚Ȃ̂¾‚ªj

266 –¼‘OF240 mailto:sage [2018/09/16(“ú) 23:35:36.48 ID:/oSJzlqn.net]
>> 252‚ÍRelease”Å‚ðƒRƒ“ƒ\[ƒ‹‚ÅŽÀs‚µ‚½‚Æ‚«‚Ì‹tƒAƒZƒ“ƒuƒ‹Œ‹‰ÊB
>‚»‚ê‚͂ǂ¤‚â‚Á‚Ä“¾‚½‚ÌH‰´‚Í‚»‚ꂪo—ˆ‚È‚¢‚©‚碂Á‚Ä‚éB
calc_norm_and_regulate‚ÌŽŸ‚Ìs‚É
System::Diagnostics::Debugger::Launch();
‚ð“ü‚ê‚ăRƒ“ƒ\[ƒ‹‚©‚çŽÀs‚·‚邯 just in time ƒfƒoƒbƒO‚Å‚«‚é‚Ì‚ÅAƒfƒoƒbƒK‚ð‘I‚ñ‚¾ŒãA
Visual Studio‚Ì ŒÄ‚Ño‚µ—š—ð‚©‚ç calc_norm_and_regulate ‚ð’T‚µ‚Ĉړ®‚·‚é

>> ‚¿‚Ȃ݂ÉA235‚ÍDebugƒ‚[ƒh‚ŃRƒ“ƒpƒCƒ‹‚µAƒfƒoƒbƒK”z‰º‚Ì‹tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚Å‚µ‚åB
>236‚ÍAIDEã‚ÅReleaseƒ‚[ƒh‚ÅF5‚Å‹N“®‚µAƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚𓖂ĂĎ~‚߂ċtƒAƒZƒ“ƒuƒ‹‚µ‚½Œ‹‰ÊB

‚ ‚êH ‚¾‚Æ‚·‚邯œK‰»‚µ‚Ä‚¢‚È‚¢‚̂łÍH
‚±‚¿‚ç‚ÌŒ‹‰Ê‚ƈႤ‚Ì‚¾‚ªB

267 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 23:49:32.68 ID:SOVIz+sV.net]
‚Ƃ肠‚¦‚¸A>>199‚É‘‚¢‚Ä‚ ‚邯‚¨‚èAŒ³‚̺°ÄÞ‚ÅÄŒ»‚Í‚µ‚Ă邩‚ç‚È
‚»‚ÌÄŒ»‚µ‚½º°ÄÞ‚Æ‹t±¾ÝÌÞÙ‚µ‚½Œ‹‰Ê‚Í‚ ‚°‚Æ‚­

‡B-1 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞz

#include "stdafx.h"
#include <stdio.h>
#include <stdint.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];
//@@@@@@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;
}

268 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 23:50:40.20 ID:SOVIz+sV.net]
‡B-1 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞzi‚»‚Ì2j

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);
@@@fprintf(stdout, "[2]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm);
@@@// 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;
}

269 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 23:51:14.21 ID:SOVIz+sV.net]
‡B-1 ÃÞÌ«ÙÄÝ’èiReleasej@yŽÀsŒ‹‰Êz

«‚±‚̺°ÄÞ‚Ì‹t±¾ÝÌÞÙº°ÄÞ
https://ideone.com/Gf4qUQ

[1]0x0007F2C44DFFF8F2:1.1053482540585106e-308
[2]0x1FF68DDFB62221DE:1.051355436595308e-154

270 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 23:54:13.85 ID:SOVIz+sV.net]
‚ÅA>>200‚É‘‚¢‚Ä‚ ‚邯‚¨‚è«DebugËÞÙÄÞ‚Æ“¯‚¶Œ‹‰Ê‚ªÄŒ»‚³‚ꂽ

> «‚±‚̉º‚ÉiÙ°Ìß“à‚Éjfprintf•¶‚ð“ü‚ê‚邾‚¯‚Å
> @ReleaseËÞÙÄÞ‚ÆDebugËÞÙÄÞ‚ª“¯‚¶ŽÀsŒ‹‰Ê‚ɂȂ邱‚Æ‚ªŠm”F‚Å‚«‚½
> norm += (double)r[i] * (double)r[i];

‡B-2 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞzi‚»‚Ì1j

#include "stdafx.h"
#include <stdio.h>
#include <stdint.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];
@@@@@@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;
}

271 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 23:54:58.60 ID:SOVIz+sV.net]
‡B-2 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞzi‚»‚Ì2j

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);
@@@fprintf(stdout, "[2]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm);
@@@// 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;
}

272 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/16(“ú) 23:56:17.88 ID:SOVIz+sV.net]
‡B-2 ÃÞÌ«ÙÄÝ’èiReleasej@yŽÀsŒ‹‰Êz

«‚±‚̺°ÄÞ‚Ì‹t±¾ÝÌÞÙº°ÄÞ
https://ideone.com/E3Nxt8

«ŽÀsŒ‹‰Ê‚ð‘‚«ž‚߂Ȃ¢‚©‚炱‚Á‚¿‚É‘‚«ž‚ñ‚Ç‚¢‚½
https://ideone.com/1cky6N

[1]0x0007F2C44DFFF8F1:1.1053482540585101e-308
[2]0x1FF68DDFB62221DD:1.0513554365953078e-154

ˆÈゾ

273 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/16(“ú) 23:58:42.66 ID:zL1WUjLu.net]
>>259
‚¨‚¨A‚»‚Ì‚â‚è•û‚Í’m‚ç‚È‚©‚Á‚½B‘å•Ï•‚©‚Á‚½B‚ ‚肪‚Æ‚¤B
‚ÅAŒ‹‰Ê‚¾‚ªA>>253‚Ƃ͔÷–­‚ɈႤ‚ªAŠm‚©‚ÉŠg’£”{¸“x‚ÅŒvŽZ‚³‚ê‚Ä‚¢‚éB
‹tƒAƒZƒ“ƒuƒ‹Œ‹‰Ê‚ÍAˆÈ‰ºB

0000000e D9 EE fldz
for (int i=0;i<num;i++) norm += (double)r[i] * (double)r[i];
00000010 33 C9 xor ecx,ecx
00000012 EB 01 jmp 00000015
00000014 41 inc ecx
00000015 3B CE cmp ecx,esi
00000017 7D 0B jge 00000024
00000019 DD 04 CF fld qword ptr [edi+ecx*8]
0000001c D9 C0 fld st(0)
0000001e DE C9 fmulp st(1),st
00000020 DE C1 faddp st(1),st
00000022 EB F0 jmp 00000014
norm = sqrt(norm);
00000024 83 EC 08 sub esp,8
00000027 DD 1C 24 fstp qword ptr [esp]
0000002a E8 49 7C F2 FF call FFF27C78

‚Ƃɂ©‚­AReleaseƒrƒ‹ƒh‚ðƒRƒ“ƒ\[ƒ‹‚©‚ç‹N“®‚µ‚½ê‡‚ÍŠg’£”{¸“x‚ɂȂÁ‚Ä‚é‚͕̂ª‚©‚Á‚½B
‚È‚çAReleaseƒrƒ‹ƒh‚ðIDE‚©‚ç‹N“®‚µ‚½ê‡‚͉½‚ð‹N“®‚µ‚Ä‚é‚ñ‚¾‚±‚ê‚ÍH
Debugƒrƒ‹ƒh‚Æ‚à”÷–­‚ɃAƒhƒŒƒX“™‚ªˆá‚¤‚ñ‚¾‚ªB

‚Ƃ͂¢‚¦A‚±‚ê‚Íu‚»‚à‚»‚àFXŠÔˆá‚Á‚Ä‚¢‚év‰Â”\«‚ªo‚Ä‚«‚½‚Ì‚ÅA‚à‚¤ˆê“x‘S‘Ì‚ðŒ©’¼‚·B
–¾“úi‚¾‚¯‚ÅςނƂàŽv‚¦‚È‚¢‚ªjŠm”F‚µA®—‚µ‚Ă܂½“Še‚·‚éB

‚Ƃɂ©‚­‚ ‚肪‚Æ‚¤B‚±‚ê‚Í‚¾‚¢‚ÔƒCƒ“ƒpƒNƒg‚ª‚ ‚éBi‚Í‚¸)

274 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) ]
[‚±‚±‰ó‚ê‚Ă܂·]



275 –¼‘OF 00:49:10.27 ID:gBxGzBbQ.net mailto: >>266
ide‚Æconsole‚Å”÷–­‚ɈႤƒo[ƒWƒ‡ƒ“‚Ìvcruntime‚ªƒ[ƒh‚³‚ê‚Ă邯‚©H
process monitor‚ʼn½‚ªŽÀs‚³‚ê‚ĉ½‚ªƒ[ƒh‚³‚ê‚Ă邩’²‚ׂ邯‚©H
‚ ‚Æ‚Íwindbg‚©‚ç‹N“®‚µ‚½‚çAide‚Æconsole‚̂ǂ¿‚ç‚ÌŒ‹‰Ê‚ƈê’v‚·‚é‚Ì‚©‹C‚ɂȂéB
[]
[‚±‚±‰ó‚ê‚Ă܂·]

276 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 01:06:37.11 ID:+dwRu2dr.net]
>>262
‚¾‚©‚ç‚»‚ê‚Í>>201‚Æ“¯‚¶‚È‚ñ‚¾‚æB
‚»‚Ì‹tƒAƒZƒ“ƒuƒ‹‚Å‚¢‚¤‚ÆAˆÈ‰º•”•ª‚ªƒƒ‚ƒŠ‚Éo—Í‚³‚ꂸAŠg’£”{¸“x‚Å“®ì‚µ‚Ă邾‚ëB

00000281 fld qword ptr [ebp+FFFFFF14h]
00000287 fmul st,st(0)
00000289 fadd qword ptr [ebp+FFFFFF70h]
0000028f fld qword ptr [ebp+FFFFFF1Ch]
00000295 fmul st,st(0)
00000297 faddp st(1),st
00000299 fld qword ptr [ebp+FFFFFF24h]
0000029f fmul st,st(0)
000002a1 faddp st(1),st
000002a3 fld qword ptr [ebp+FFFFFF2Ch]
000002a9 fmul st,st(0)
000002ab faddp st(1),st
000002ad fld qword ptr [ebp+FFFFFF34h]
000002b3 fmul st,st(0)
000002b5 faddp st(1),st
000002b7 fld qword ptr [ebp+FFFFFF3Ch]
000002bd fmul st,st(0)
000002bf faddp st(1),st
000002c1 fld qword ptr [ebp+FFFFFF44h]
000002c7 fmul st,st(0)
000002c9 faddp st(1),st
000002cb fld qword ptr [ebp+FFFFFF4Ch]
000002d1 fmul st,st(0)
000002d3 faddp st(1),st
000002d5 fstp qword ptr [ebp+FFFFFF70h]

277 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 01:07:41.74 ID:+dwRu2dr.net]
>>262i‘±‚«)
‚±‚ê‚Í­‚È‚­‚Æ‚àuƒ‹[ƒv‰ñ”‚ª8‚Ì”{”‚Å‚ ‚évŽ–‚ªƒRƒ“ƒpƒCƒ‰‚ÉŒ©‚¦‚È‚¢‚Æo—ˆ‚È‚¢Å“K‰»‚¾B
‚»‚¤‚łȂ¯‚ê‚ÎA—Ⴆ‚΃‹[ƒv‰ñ”‚ª6‰ñ‚â14‰ñ‚ÌŽž‚ÉA
ʼn‚Ì‚P‰ñ‚¾‚¯ 0299 ‚É”ò‚Ñž‚ñ‚ÅŽn‚ß‚éi“ª‚Ì2‰ñ‚ðƒXƒLƒbƒv‚·‚éjƒR[ƒh‚ª•K—v‚ɂȂ邪A
‚»‚ê‚Ío‚ĂȂ¢‚¾‚ëB

(‚»‚à‚»‚à‚±‚̃Aƒ“ƒ[ƒŠƒ“ƒO‚ªx86“I‚ɈӖ¡‚ª‚ ‚é‚Ì‚©‚à‹^–₾‚ªj
ˆê”Ê“I‚ÉA‰Â•ωñ”ƒ‹[ƒv‚ð“WŠJ‚·‚邯A•K‚¸ã‹L‚Ì’[؂ꈗiƒLƒŠ‚ª—Ç‚­‚È‚¢‚Æ‚«‚̈—j‚ª•K—v‚ɂȂéB
‚¾‚©‚çu‰Â•Ïv‚¾‚ÆŠm’肵‚Ä‚¢‚é‚̂Ȃ畒ʂ͓WŠJ‚µ‚È‚¢B
‚‚܂èAˆê”Ê“I‚É‚ÍA•ÊŠÖ”‚Ń‹[ƒv‰ñ”‚ªˆø”‚Å—^‚¦‚ç‚ê‚Ä‚½‚çA‚»‚ÌÅ“K‰»‚Í‚©‚©‚ç‚È‚¢B

¡‰ñƒqƒbƒg‚·‚éƒf[ƒ^‚ª‹ôX16‰ñƒ‹[ƒv‚¾‚Á‚½‚¾‚¯‚ÅA
‰´‚Ì–{”ÔƒR[ƒh‚͉•ςŗp‚¢‚Ä‚¢‚éˆ×A
‚±‚̂悤‚ȃAƒ“ƒ[ƒŠƒ“ƒO‚Í‚³‚ê‚ĂȂ¢Bi‚ÆŽv‚Á‚Ä‚éB‚½‚¾‚µ265‚Ì’Ê‚è‚à‚¤ˆê“xŠm”F•K—vj
‚±‚¿‚炳̓fƒtƒH‚Å‚»‚±‚Ü‚ÅÅ“K‰»‚ª‚©‚©‚ç‚È‚¢‚̂ł»‚¿‚ç‚Ì󋵂͂悭•ª‚©‚ç‚È‚¢‚ªA
‚»‚ÌÅ“K‰»‚ª‚©‚©‚Á‚Ä‚é‚̂ȂçA‰´‚Ì–{”ÔƒR[ƒh‚Ƃ͈Ⴄ󋵂œ®‚¢‚Ä‚¢‚邱‚ƂɂȂéB(‚Í‚¸j
‚¾‚©‚牴‚Í‚»‚ÌÅ“K‰»‚ª‚©‚©‚ç‚È‚¢”͈͂ŋc˜_‚µ‚Ä‚éB
‚»‚ꂪ‰´‚ªÅ‰‚©‚ç•ÊŠÖ”‚É‚µ‚Ä‚½——RBi‚Æ‚¢‚¤‚©Œ³‚̃R[ƒh‚ª•ÊŠÖ”‚¾‚©‚炾‚ªj


‚Ă䂤‚©ƒ}ƒW‚Å‚»‚êƒfƒtƒH‚̂܂܂©H
‚à‚µ‚©‚µ‚ĉ´‚̊‹«‚ª‚¨‚©‚µ‚­‚ÄA‘S‚­Å“K‰»‚³‚ê‚ĂȂ¢ƒR[ƒh‚ªo‚Ä‚éH

278 –¼‘OF247 mailto:sage [2018/09/17(ŒŽ) 01:12:11.55 ID:yaPtorLJ.net]
¡A–ß‚Á‚½B

Ȃ𗣂ê‚ÄŽv‚Á‚½‚ªA‘½•ªAC++/CLI ‚Ìê‡AIDE‚ŃRƒ“ƒpƒCƒ‹ŒãA
exeƒtƒ@ƒCƒ‹‚ɂȂÁ‚Ä‚àAunmanaged ƒR[ƒh•”•ªˆÈŠO‚ÍA–{Ž¿“I‚É‚Í
.NET‚Ì‹¤’Ê’†ŠÔŒ¾Œê(CILAMSIL)‚ɂȂ邾‚¯‚ÅAx86‚̃}ƒVƒ“Œê‚É‚Í
‚È‚Á‚ĂȂ¢‚ÆŽv‚¤Bˆê•ûÂȂª‚ç‚Ì–{“–‚ÌC++‚Å‚ÍAexe‚Ì’†g‚ÍA
–{Ž¿“I‚É‚ÍAx86‚̃}ƒVƒ“Œê‚ª“ü‚Á‚Ä‚¢‚½B

C++/CLI‚Ìê‡A쬂³‚ꂽexe‚ÍA‹N“®Žž‚ÉA’†ŠÔŒ¾Œê‚ªx86‚Ì
ƒ}ƒVƒ“Œê‚É’¼‚³‚ê‚Ä‚©‚çŽÀs‚³‚ê‚éB‚»‚ÌÛAÅ“K‰»‚ÌŠÖŒW‚ÅA
‚Ç‚¤’¼‚³‚ê‚é‚©‚ª•K‚¸‚µ‚àˆê’肵‚Ä‚¢‚È‚¢B‚¾‚©‚çAIDE‚©‚ç‚Ì‹N“®‚ÆA
ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚©‚ç‚Ì‹N“®‚ňقȂÁ‚½x86–½—߂ɒ¼‚³‚ê‚Ä‚µ‚Ü‚¤
‚Ì‚©‚à’m‚ê‚È‚¢B

o—ˆ‚½x86ƒR[ƒh‚ªA—Ç‚­Å“K‰»‚³‚ꂽê‡Ax87 fpu–½—߂𒷂«‚É
“n‚Á‚ăƒ‚ƒŠ‚É‘‚«–ß‚³‚¸‚ÉAst(0)`st(7)‚̃ŒƒWƒXƒ^ã‚ʼn‰ŽZ‚µ
‘±‚¯‚ç‚ê‚邱‚ƂɂȂéB‚»‚Ìê‡A80BIT‚̸“x‚ÅŒvŽZ‚³‚ê‚é
ŠúŠÔ‚ª’·‚­‚È‚éB

ˆê•ûAx87 fpu–½—߂Ɋւ·‚éÅ“K‰»‚ª­‚µˆ«‚¢‚©Aˆ«‚­‚È‚­‚Ä‚à–½—ß‚Ì
Žg‚¢•û‚ª•Ï‚í‚Á‚Ä‚µ‚Ü‚¤‚ÆA80BIT(Šg’£double)‚©‚ç64BIT(double)‚Ö
’¼‚³‚ê‚éƒ^ƒCƒ~ƒ“ƒO‚â‰ñ”‚ª•Ï‚í‚éB

‚±‚Ì—¼ŽÒ‚ł͌‹‰Ê‚̸“x‚ª•Ï‚í‚Á‚Ä‚­‚éB‘OŽÒ‚Ì•û‚ªŒãŽÒ‚æ‚è‹Í‚©
‚ɸ“x‚ª‚‚­‚È‚éB

279 –¼‘OF243=269 mailto:sage [2018/09/17(ŒŽ) 01:14:28.51 ID:yaPtorLJ.net]
>>270
–¼‘O—“‚ÍAu247v‚ł͂Ȃ­u243v‚̊ԈႢ‚¾‚Á‚½B

280 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 01:24:06.04 ID:yaPtorLJ.net]
>>258
>‚È‚¨ILSpyAƒOƒ_ƒOƒ_Œ¾‚킸‚ÉŽŽ‚µ‚Ă݂½‚ªA
>“–‚½‚è‘O‚¾‚ªmanaged code ‚¾‚ÆIL‚ªo‚é(x86‚ł͂Ȃ¢j‚Ì‚ÅA
>‰´‚Á‚Ī–{“I‚ÉŠÔˆá‚Á‚Ä‚½‚©‚àH
>¡‚Ü‚Åx86‚̃AƒZƒ“ƒuƒ‰‚Å‹c˜_‚µ‚Ä‚½‚¯‚ÇA‚±‚ê‚Á‚Ä .NET ƒAƒvƒŠ‚ɂ͓¯«‚³‚ê‚Ä‚¢‚È‚¢‚Æ‚¢‚¤ƒIƒ`H

‚â‚Í‚èAmanaged code•”•ª‚ÍAx86–½—߂ł͖³‚­AIL‚ɃRƒ“ƒpƒCƒ‹‚³‚ê‚Ä‚¢‚ÄA
•’Ê‚ÌC++‚Ƃ͈á‚Á‚Ä‚½‚ñ‚¾B

281 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 01:30:31.16 ID:yaPtorLJ.net]
>calc_norm_and_regulate‚ðunmanagedŠÖ”‚É‚·‚邯Aˆá‚¢‚͂Ȃ­‚È‚éB
>(Releaseƒrƒ‹ƒh‚ÌM‚ðƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚Å‹N“®‚µ‚½Û‚É‚àA****dd‚ÌŒ‹‰Ê‚ƂȂéj

‚â‚Í‚èB
unmanagedŠÖ”‚ÌꇂÍACIL(MSIL)‚ł͂Ȃ­Aexe‚Ì’iŠK‚ÅŠù‚É
x86ƒ}ƒVƒ“Œê‚É’¼‚³‚ꂽ‚à‚Ì‚ªŠi”[‚³‚ê‚é‚ñ‚¾‚낤B‚¾‚Æ‚·‚邯A‹N“®•û–@‚É
ŠÖŒW‚È‚­A­‚È‚­‚Æ‚à‚»‚Ì•”•ª‚ÉŠÖ‚µ‚Ä‚ÍAx87 fpu–½—߂̎g‚í‚ê•û‚ª
‘S‚­“¯‚¶‚ɂȂéBcall‚µ‚½sqrt()ŠÖ”‚Ì’†‚Íœ‚¢‚ÄB

282 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 01:37:20.55 ID:dj7qSZnZ.net]
>>260-261‚̺°ÄÞ‚à>>263-264
‚à“¯‚¶ðŒ‚ÅÃÞÌ«ÙĂźÝÊß²Ù‚µ‚Ä‚é
ºÚ‚͊ԈႢ‚È‚¢

ˆêsºÒÝĂ͂¸‚µ‚ĺÝÊß²Ù‚µ‚È‚¨‚·‚¾‚¯‚¾‚©‚ç‚È

‚ÅA>>262A>>265‚Ý‚½‚¢‚ÈŒ‹‰Ê‚ɂȂé
>>265‚ÌŽÀsŒ‹‰Ê‚ÍDebugËÞÙÄނƂ܂Á‚½‚­“¯‚¶‚ɂȂé
‚»‚̂܂ñ‚Ü

283 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 02:03:16.26 ID:yaPtorLJ.net]
‚Í‚Á‚«‚è‘‚¢‚Ä‚ ‚éBmanaged code ‚ÍA‹N“®Žž‚ÉJITƒRƒ“ƒpƒCƒ‹‚³‚ê‚éB
‚¾‚©‚çA‚Ç‚ñ‚ȃ}ƒVƒ“Œê‚É’u‚«Š·‚í‚é‚©‚ªAƒRƒ“ƒpƒCƒ‹‚µ‚½‚¾‚¯‚Å‚Í
‚Ü‚¾Š®‘S‚ɂ͌ˆ’肳‚ê‚ĂȂ¢B

https://en.wikipedia.org/wiki/Managed_code

Drawbacks include slower startup speed (the managed code must be JIT
compiled by the VM) and generally increased use of system resources
on any machine that is executing the code.


managed code ‚ÍAVM‚É‚æ‚Á‚ÄAJIT ƒRƒ“ƒpƒCƒ‹‚³‚ê‚È‚¢‚Æ‚¢‚¯‚È‚¢‚Ì‚ÅA
‹N“®‘¬“x‚ª’x‚­‚È‚èA‚©‚ÂAˆê”Ê“I‚ÉAƒVƒXƒeƒ€EƒŠƒ\[ƒX‚ÌŽg—p‚ª‘‚¦‚éB

284 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:49:02.18 ID:dj7qSZnZ.net]
•’ʂ̺ݿ°Ù±Ìߨ¹°¼®Ý(CLR‚¶‚á‚È‚¢‚Ù‚¤)‚Å‚à
“¯‚¶º°ÄÞ‚Å•’ʂɂ܂Á‚½‚­“¯‚¶‚悤‚ÉÄŒ»‚·‚éܹ‚¾‚ª

ÎÝĂȷÐׂ͂Ȃɂ𓪈«‚¢‚±‚Ƃ΂Á‚©‚è‚¢‚Á‚Ä‚ñ‚ÌH
ŽÀsŒ‹‰Ê‚¾‚¯‚͂͂Á‚Æ‚¢‚Ä‚â‚邪



285 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:50:12.89 ID:dj7qSZnZ.net]
‡C-1 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞzi‚»‚Ì1j

#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;
}

286 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:50:37.91 ID:dj7qSZnZ.net]
‡C-1 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞzi‚»‚Ì2j

int _tmain(int argc, _TCHAR* argv[])
{
@@@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);
@@@fprintf(stdout, "[2]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm);
@@@return 0;
}

287 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:51:12.35 ID:dj7qSZnZ.net]
‡C-1 ÃÞÌ«ÙÄÝ’èiReleasej@yŽÀsŒ‹‰Êz

«‚±‚̺°ÄÞ‚Ì‹t±¾ÝÌÞÙº°ÄÞ
https://ideone.com/Dqqn6J

[1]0x0007F2C44DFFF8F2:1.1053482540585106e-308
[2]0x1FF68DDFB62221DE:1.051355436595308e-154

288 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:51:53.99 ID:dj7qSZnZ.net]
‡C-2 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞzi‚»‚Ì1j

#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;
}

289 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:52:10.55 ID:dj7qSZnZ.net]
‡C-2 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞzi‚»‚Ì2j

int _tmain(int argc, _TCHAR* argv[])
{
@@@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);
@@@fprintf(stdout, "[2]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm);
@@@return 0;
}

290 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:52:25.20 ID:dj7qSZnZ.net]
‡C-2 ÃÞÌ«ÙÄÝ’èiReleasej@yŽÀsŒ‹‰Êz

«‚±‚̺°ÄÞ‚Ì‹t±¾ÝÌÞÙº°ÄÞ
https://ideone.com/5OaUe6

«ŽÀsŒ‹‰Ê‚ð‘‚«ž‚߂Ȃ¢‚©‚炱‚Á‚¿‚É‘‚«ž‚ñ‚Ç‚¢‚½
https://ideone.com/FFW0P0

[1]0x0007F2C44DFFF8F1:1.1053482540585101e-308
[2]0x1FF68DDFB62221DD:1.0513554365953078e-154

291 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:53:45.62 ID:dj7qSZnZ.net]
‡C-2 ÃÞÌ«ÙÄÝ’è(Release)@yº°ÄÞzi‚»‚Ì1j

#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;
}

292 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:54:34.82 ID:dj7qSZnZ.net]
i³j>>283
iΑj>>280

293 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 02:57:46.48 ID:dj7qSZnZ.net]
>>277-278‚̺°ÄÞ‚à>>283,281‚̺°ÄÞ‚à
‚à“¯‚¶ðŒ‚ÅÃÞÌ«ÙĂźÝÊß²Ù‚µ‚Ä‚é

ˆêsºÒÝĂ͂¸‚µ‚ĺÝÊß²Ù‚µ‚È‚¨‚·‚¾‚¯‚¾‚©‚ç‚È

‚ÅA>>279A>>282‚Ý‚½‚¢‚ÈŒ‹‰Ê‚ɂȂé
>>282‚ÌŽÀsŒ‹‰Ê‚ÍDebugËÞÙÄނƂ܂Á‚½‚­“¯‚¶‚ɂȂé
‚»‚̂܂ñ‚Ü

CLR‚̂Ƃ«i>>274j‚Ì“®ì‚Ƃ܂Á‚½‚­“¯‚¶
·Ðׂ͂¸[‚Á‚ƂȂɂâ‚Á‚Ä‚é‚킯H

294 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 09:44:34.76 ID:yu1Dprt2.net]
>>285
“¯ˆê‚Ìrelease‚ðƒRƒ“ƒ\[ƒ‹‚ÅŽÀs‚·‚é‚©ƒfƒoƒbƒK‚ÅŽÀs‚·‚é‚©‚ÅŒ‹‰Ê‚ªˆÙ‚È‚é‚̂͂Ȃº‚¾‚낤B
‚Æ‚¢‚¤˜b‚ð‚µ‚Ä‚¢‚½‚̂ł ‚Á‚ÄA
debug/release‚ŕʂ̌‹‰Ê‚ɂȂ邱‚Æ‚ð–â‘è‚É‚µ‚Ä‚¢‚é‚̂ł͂Ȃ¢‚Å‚·B



295 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 10:25:22.39 ID:+dwRu2dr.net]
>>192‚ªƒRƒ“ƒ\[ƒ‹‹N“®‚ÆIDE‹N“®‚Å‹““®‚ªˆÙ‚Ȃ闗R‚Í•ª‚©‚è‚Ü‚µ‚½B
‚ ‚肪‚Æ‚¤B

Œ‹˜_‚͂‚܂èˆÈ‰º‚¾B
> JIT ‚ÌÅ“K‰»‚ƃfƒoƒbƒOi”²ˆj
> ƒ}ƒl[ƒW ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒfƒoƒbƒO‚·‚邯‚«AVisual Studio ‚Å‚ÍAŠù’è‚ÅA
> ƒWƒƒƒXƒg ƒCƒ“ ƒ^ƒCƒ€ (JIT: Just-In-Time) ƒR[ƒh‚ÌÅ“K‰»‚ªÈ—ª‚³‚ê‚Ä‚¢‚Ü‚·B
> Å“K‰»‚³‚ꂽƒR[ƒh‚ðƒfƒoƒbƒO‚·‚é‚̂͢“ï‚Å‚ ‚邽‚ßA
> Å“K‰»‚³‚ꂽƒR[ƒh‚Å”­¶‚·‚éƒoƒO‚ªA”ñÅ“K‰»ƒo[ƒWƒ‡ƒ“‚Å‚ÍÄŒ»‚µ‚È‚¢‚Æ‚«‚ɂ݂̂¨Š©‚ß‚µ‚Ü‚·B
> JIT Å“K‰»‚ÍAVisual Studio ‚Ì [ƒ‚ƒWƒ…[ƒ‹‚̓ǂݞ‚Ý’†‚É JIT Å“K‰»‚ð—}§‚·‚é] ƒIƒvƒVƒ‡ƒ“‚ŧŒä‚³‚ê‚Ü‚·B
> ŽÀs’†‚̃vƒƒZƒX‚ɃAƒ^ƒbƒ`‚·‚éê‡AŠù‚ɓǂݞ‚Ü‚êAJIT ‚ŃRƒ“ƒpƒCƒ‹‚³‚êA
> Å“K‰»‚³‚ê‚Ä‚¢‚éƒR[ƒh‚ªŠÜ‚Ü‚ê‚邱‚Æ‚ª‚ ‚è‚Ü‚·B
> ‚±‚̂悤‚ȃR[ƒh‚Ìê‡A[ƒ‚ƒWƒ…[ƒ‹‚̓ǂݞ‚Ý’†‚É JIT Å“K‰»‚ð—}§‚·‚é] ƒIƒvƒVƒ‡ƒ“‚̉e‹¿‚Í‚ ‚è‚Ü‚¹‚ñB
> https://msdn.microsoft.com/ja-jp/library/ms241594.aspx
Šm‚©‚É‚±‚̃IƒvƒVƒ‡ƒ“‚Å’¼‚Á‚½B

296 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 10:25:48.51 ID:+dwRu2dr.net]
‚»‚Ì‘¼”XA˜b‚ð®—‚·‚邯AˆÈ‰º‚ƂȂéBiƒ\[ƒX‚Í>>192ŽQÆj
1. managedƒR[ƒh‚Å‚ÍMSIL‚ªo—Í‚³‚êAx86ƒR[ƒh‚͊܂܂ê‚Ä‚¢‚È‚¢B
2. ‹N“®ŽžAMSIL‚ÍJIT‚³‚êAx86ƒR[ƒh‚É—Ž‚Æ‚³‚ê‚éB
3. ‚±‚Ì‚½‚ßAmain‚Ì1s–ڂŃuƒŒ[ƒNƒ|ƒCƒ“ƒg‚ÅŽ~‚ßAcalc_norm_and_regulate‚Ì‹tƒAƒZƒ“ƒuƒ‹‚ðŒ©‚æ‚¤‚Æ‚µ‚Ä‚àA
@IDEã‚Åu‹tƒAƒZƒ“ƒuƒ‹‚ð•\ަ‚Å‚«‚Ü‚¹‚ñBŽ®‚ª‚Ü‚¾ƒlƒCƒeƒBƒu ƒ}ƒVƒ“ ƒR[ƒh‚É–|–󂳂ê‚Ä‚¢‚Ü‚¹‚ñBv‚Æo‚éB
@‚±‚ê‚Ímain‚Ì1s–Ú‚É System::Diagnostics::Debugger::Launch(); ‚ð“ü‚ꂽ‚Æ‚«‚à“¯—lB
4. ‚»‚µ‚Ä‚±‚ÌJIT‚ÉŠÖ‚µ‚ÄAã‹LIDE’†‚Ì w[ƒ‚ƒWƒ…[ƒ‹‚̓ǂݞ‚Ý’†‚É JIT Å“K‰»‚ð—}§‚·‚é] ƒIƒvƒVƒ‡ƒ“x ‚ªŒø‚¢‚Ä‚­‚éB
@‹K’è‚ł̓IƒtA‚‚܂èAReleaseƒrƒ‹ƒh‚Å‚àIDE‹N“®‚È‚çJITÅ“K‰»‚Í—}§‚³‚ê‚éB
@‚±‚ꂪfld/fmul/fadd/fstp‚̃‹[ƒvƒR[ƒh‚ɂȂ闗RB
@‚±‚ê‚ðƒIƒ“‚É‚·‚ê‚ÎAŠm‚©‚ÉReleaseƒrƒ‹ƒhIDE‹N“®‚Å‚àA
@fld/fmul/fadd‚̃‹[ƒvƒR[ƒh‚ƂȂèAƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‹N“®‚Æ“¯‚¶Œ‹‰Ê‚ɂȂ邱‚Ƃ͊m”F‚µ‚½B
5. ã‹L‚ł͕\Œ»‚ª”÷–­‚¾‚ªAJITÅ“K‰»‚ð‚·‚é‚©‚Ç‚¤‚©‚͓ǂݞ‚Ü‚ê‚邯‚«‚ÉŒˆ‚Ü‚é‚炵‚¢B
@‚µ‚½‚ª‚Á‚ÄAReleaseƒrƒ‹ƒh‚ð‹N“®Œã‚ɃAƒ^ƒbƒ`‚µ‚½ê‡‚Í’Êí’Ê‚èÅ“K‰»‚³‚êA
@IDE‚©‚çReleaseƒrƒ‹ƒh‚ð‹N“®‚µ‚½ê‡‚ÍwŠù’è‚Å‚ÍxÅ“K‰»‚ª—}§‚³‚ê‚Ä‚µ‚Ü‚¤B
@‚±‚ꂪIDE‹N“®‚ƃRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‹N“®‚Å‹““®‚ªˆÙ‚È‚Á‚½Œ´ˆöB
@ã‹LAw[ƒ‚ƒWƒ…[ƒ‹‚̓ǂݞ‚Ý’†‚É JIT Å“K‰»‚ð—}§‚·‚é]x‚̃`ƒFƒbƒN‚ðŠO‚¹‚ÎA’¼‚Á‚½B
6. ‚¨‚»‚ç‚­‚±‚̃IƒvƒVƒ‡ƒ“‚̓\ƒŠƒ…[ƒVƒ‡ƒ“–ˆ‚ł͂Ȃ­AIDE‚̃Cƒ“ƒXƒg[ƒ‹–ˆ‚È‚ñ‚¾‚ÆŽv‚¤B
@iƒ\ƒŠƒ…[ƒVƒ‡ƒ“–ˆ‚̃IƒvƒVƒ‡ƒ“‚̓vƒƒWƒFƒNƒg‚̃vƒƒpƒeƒB‚É‚ ‚èAꊂªˆá‚¤)
@‚¾‚©‚ç‚»‚Ìl‚̊‹«‚É‚æ‚Á‚Ä‚Íʼn‚©‚çƒIƒt‚É‚µ‚Ä‚¢‚él‚ª‚¢‚½‚©‚àH
@‚±‚ꂪČ»ŽÀŒ±‚ð‚µ‚Ä‚­‚ꂽl‚½‚¿‚Æ”÷–­‚ÉŒ‹‰Ê‚ªˆÙ‚È‚Á‚½‚肵‚½Œ´ˆö‚©H

‚±‚ê‚Å>>192‚ɂ‚¢‚Ă̋^–â‚͉ðÁ‚µ‚½Bi‚Í‚¸j
‰´‚Ì–{”ÔƒR[ƒh‚ɂ‚¢‚Ä‚ÍÄ“xŠm”F‚µA‚Ü‚½•ñ‚·‚éB

297 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 10:28:21.54 ID:dj7qSZnZ.net]
“¯‚¶ØØ°½ËÞÙÄÞ‚Å
Œ‹‰Ê‚ª‚©‚í‚Á‚Ä‚ñ‚̂ɂȂɂ¢‚Á‚Ä‚ñ‚ÌH

fprintf“ü‚ê‚邾‚¯‚Å
ØØ°½ËÞÙÄÞ‚ÅŒ‹‰Ê‚ª•Ï‚í‚é

298 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 10:31:16.66 ID:dj7qSZnZ.net]
‚â‚Í‚è’áŠw—ð’mŒb’x‚ê‚Í
Œ‹‰Ê‚ªˆÓ–¡‚·‚邯‚±‚낪•ª‚©‚Á‚ĂȂ¢‚íBBB

299 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 10:32:49.39 ID:dj7qSZnZ.net]
‚¿‚Ȃ݂ɵڂª‚ ‚°‚½Œ‹‰Ê‚Í
‚·‚×‚ÄØØ°½ËÞÙÄÞ‚ÌŒ‹‰Ê‚¾‚©‚ç‚È
ÃÞÊÞ¯¸ÞËÞÙÄÞ‚ÌŒ‹‰Ê‚È‚ñ‚©‚ ‚°‚Ä‚à
ˆÓ–¡‚È‚¢‚©‚ç‚È

300 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 10:38:00.02 ID:dj7qSZnZ.net]
CLR‚̹°½‚àCLR‚łȂ¢•’Ê‚Ìexe‚̹°½‚Å‚à
Œ‹‰Ê‚͂܂Á‚½‚­“¯‚¶‚¾‚©‚ç‚È

‚µ‚©‚à‚·‚×‚ÄØØ°½ËÞÙÄÞ‚Å
‚¨‚«‚Ä‚éŒë·‚܂ł҂Á‚½‚èˆê’v‚µ‚Ä‚é

301 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 10:52:24.35 ID:+dwRu2dr.net]
>>289
‚¨‘O‚Í‘Š•Ï‚í‚炸—‰ð‚µ‚ĂȂ¢‚ÈB

80bitiŠg’£”{¸“xj‚Æ64bit(”{¸“x)‚̉‰ŽZ‚ÅŒ…—Ž‚¿‚ªˆÙ‚È‚èAŒ‹‰Ê‚ªˆÙ‚È‚é‚͓̂–‘R‚È‚ñ‚¾‚æB
–â‘è‚Í“¯‚¶ƒoƒCƒiƒŠ‚̕Ȃɉ½ŒÌ‹N“®•û–@‚É‚æ‚Á‚ĈقȂé‚Ì‚©H‚¾‚Á‚½‚ñ‚¾B

——R‚ÍMSIL‚¾‚©‚炾B
MSIL‚ÍCLRã‚ÅJIT‚³‚êAx86ƒR[ƒh‚É—Ž‚Æ‚³‚ê‚éB
‚±‚̂Ƃ«‚ÉJITÅ“K‰»‚ª‚©‚©‚ê‚ÎAŠg’£”{¸“xi‚ð•Û‚Á‚½‚Ü‚Üj‚̃R[ƒh‚ɂȂ邵A
Å“K‰»‚ª‚©‚©‚炸–ˆ‰ñƒƒ‚ƒŠ‚É‘‚«–ß‚µ‚Ä‚¢‚ê‚ÎA”{¸“x‚̃R[ƒh‚ɂȂéB
.NET‚É‚¨‚¯‚铯ˆêƒoƒCƒiƒŠ‚Á‚Ă̂ÍA

302 –¼‘OF“¯ˆêMSIL‚Æ‚¢‚¤ˆÓ–¡‚Å‚ ‚Á‚ÄA“¯ˆêx86‹@ŠBŒê‚Æ‚¢‚¤ˆÓ–¡‚ł͂Ȃ¢B
‚¾‚©‚çAŠm‚©‚É“¯ˆêƒoƒCƒiƒŠ‚ð’Í‚ñ‚Å‚¢‚½‚ªA‹N“®•û–@‚É‚æ‚Á‚ÄŒ‹‰Ê‚ªˆÙ‚È‚Á‚Ä‚¢‚½‚ñ‚¾‚æB
(VS‚ªƒfƒoƒbƒO—p‚ɈÓ}“I‚É‚»‚¤‚¢‚¤Žd—l‚É‚µ‚Ä‚¢‚½‚¾‚¯B‰´‚Í‚»‚ê‚ð’m‚ç‚È‚©‚Á‚½j

ŒN‚̃R[ƒh‚ɂ‚¢‚Ä‚ÍA
‚¢‚¿‚¢‚¿fprint‚·‚éꇂÍdouble(”{¸“xj‚ª–ˆ‰ñ•K—v‚ɂȂ邩‚çA
ƒRƒ“ƒpƒCƒ‰‚Í‚»‚Ì•”•ª‚ł̊g’£”{¸“x‚ł̃‹[ƒv‚ð’f”O‚µA
Œ‹‰Ê“I‚É‚»‚̃‹[ƒv‚ª”{¸“x‚ʼnñ‚Á‚Ä‚¢‚邾‚¯‚Ì‚±‚ÆB
‚à‚µ‰¼‚ÉC‚ªŠg’£”{¸“xŒ^ ExDouble ‚ðŽ‚Á‚Ä‚¢‚½‚Æ‚µ‚ÄAprintf‚à‚»‚ê‚ɑΉž‚µ‚Ä‚¢‚ê‚ÎA
‚à‚µ‚©‚·‚邯‚»‚Ì–ˆ‰ñprintf‚·‚éƒR[ƒh‚Å‚àŠg’£”{¸“x‚ʼnñ‚Á‚Ä‚¢‚½‚©‚à‚µ‚ê‚ñB
–ܘ_Žè“®‚Å‚»‚¤‚¢‚¤ƒR[ƒh‚Ì‚·‚邱‚Æ‚à‰Â”\‚¾B
‚»‚±‚̓Rƒ“ƒpƒCƒ‰‚ª‚Ç‚¤”»’f‚µ‚½‚Ì‚©‚Å‚µ‚©‚È‚­A‚ ‚Ü‚è‹l‚߂ĂàˆÓ–¡‚ª‚È‚¢B
[]
[‚±‚±‰ó‚ê‚Ă܂·]

303 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 10:54:19.52 ID:+dwRu2dr.net]
~ fprint
› printf
‚Ü‚ A•ª‚©‚邯Žv‚¢‚Ü‚·‚ª

304 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 10:57:31.99 ID:dj7qSZnZ.net]
‚ÅAÅ“K‰»‚³‚ê‚Ă邩‚³‚ê‚ĂȂ¢‚©‚·‚ç
‚¢‚܂̂¢‚܂܂ŋC•t‚­‚±‚Æ‚·‚ç‚Å‚«‚È‚¢
‚»‚µ‚Ä‹C•t‚­•û–@‚·‚ç‚í‚©‚ç‚È‚©‚Á‚½‚킯‚©

‚¤‚ ‚í
“ª‚í‚邤BBB

·ÐAÌßÛ¸Þ×Ñ‚­‚Þ‚ÌŒü‚¢‚ĂȂ¢‚í



305 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/17(ŒŽ) 10:58:47.63 ID:dj7qSZnZ.net]
–â‘è‚ÌØ‚蕪‚¯‚ª‚Å‚«‚È‚¢l‚Í
ÌßÛ¸Þ×т͂­‚߂Ȃ¢

ºÚ‚Í’èà‚¾‚©‚ç‚È

306 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 11:09:05.96 ID:ivGPGa/P.net]
>>287
‚È‚é‚Ù‚Ç–Ê”’‚¢‚ËB

ƒŒƒX‚ª–c‘å‰ß‚¬‚Äʼn‚Ì•û‚µ‚©“Ç‚ñ‚łȂ©‚Á‚½‚¯‚ÇAƒlƒCƒeƒBƒuƒR[ƒh‚̘b‚ÆŽv‚¢ž‚ñ‚Å‚½‚ç
.NET‚̘b‚¾‚Á‚½‚Ì‚©w

307 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 12:34:14.16 ID:yaPtorLJ.net]
ŒÂl“I‚É‚ÍAC++‚âx87 FPU‚ÍŠ„‚Æ’mޝ‚ª‚ ‚Á‚½‚¯‚ÇA.NETŠÖ˜A‚Í—]‚è’Ç‚¢‚©‚¯‚ĂȂ©‚Á‚½‚Ì‚ÅA‹C‚­‚Ì‚ª’x‚ꂽB

managedƒR[ƒhAunmanagedƒR[ƒh‚ɂ‚¢‚ÄA¡‰ñ‰‚߂Dz‚ׂĂ݂½‚­‚ç‚¢‚¾‚µB

308 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 12:53:34.77 ID:yaPtorLJ.net]
>>293
uID:dj7qSZnZv‚Ìl‚Í—‰ð‚µ‚Ä‚¢‚È‚¢‚ËB
”Þ‚Íl‚ÌŽ–”nŽ­‚É‚µ‚Ă邯‚ÇEEEB

309 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 13:39:23.91 ID:F2vzl5VC.net]
ʼn‚ÉŽw“E‚³‚ꂽ‚±‚Æ‚¾‚낤‚ÉB
ƒAƒZƒ“ƒuƒ‰ƒŒƒxƒ‹‚Ÿ“x‚âŒø—¦‚ɉî“ü‚µ‚½‚«‚á.net‚È‚ñ‚ÄŽg‚¤‚ÈA‚È‚ñ‚Ä•ª‚©‚è‚«‚Á‚½‚±‚ÆB

310 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 14:58:46.52 ID:zCVYDMXL.net]
ƒGƒfƒBƒ^Žg‚Á‚Ă邯‚½‚Ü‚É Intellisense‹@”\‚ªŒø‚©‚È‚¢‚Æ‚«‚ª‚ ‚é‚ñ‚¾‚ª
‚ ‚ê‚È‚ñ‚È‚ÌH
’†ŠÔƒtƒ@ƒCƒ‹‚Æ‚©Á‚¹‚Î’¼‚é‚ÌH

311 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 17:03:46.83 ID:+dwRu2dr.net]
>>301
‚Í‚¢B‚æ‚­‰ó‚ê‚Ü‚·B
> [C++] There is an issue with the .ncb file
> Close the solution.
> Delete the . ncb file.
> Reopen the solution.
> Reopening the solution creates a new . ncb file.
> https://msdn.microsoft.com/ja-jp/library/ks1ka3t6(v=vs.110)

312 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 17:17:56.66 ID:zCVYDMXL.net]
>>302
‚È‚é‚Ù‚Ç .ncbƒtƒ@ƒCƒ‹‚Ë
¡“xÁ‚µ‚Ä‚â‚Á‚Ă݂é‚í

313 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/17(ŒŽ) 18:30:58.83 ID:+dwRu2dr.net]
‚³‚ĉ´‚Ì–{”ÔƒR[ƒhAˆÈ‰º‚̂悤‚¾B
‹^–â‚͉ðÁ‚µ‚½B‹¦—Í‚µ‚Ä‚­‚ꂽŠF—l‚ ‚肪‚Æ‚¤B

FŠg’£”{¸“xA›F”{¸“xA‚Æ‚µ‚ÄA(ƒ\[ƒX‚Í>>192ŽQÆ)
EReleaseƒrƒ‹ƒh‚ðƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚©‚ç‹N“®¨Ï˜aA•½•ûª
EDebugƒrƒ‹ƒh‚ðƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚©‚ç‹N“®¨Ï˜aA›•½•ûª
EIDE‚©‚ç‹N“®¨›Ï˜aA›•½•ûª

‚±‚ê‚Å3Ží—Þo—ˆã‚ª‚Á‚Ä‚½B
(‚È‚¨A>>167“àƒoƒCƒiƒŠ‚ðƒAƒ^ƒbƒ`‚µ‚½Û‚ÌuA‚Ü‚½‚ÍCv‚ÍAuA‚Ü‚½‚ÍBv‚̊ԈႢ)
‚»‚µ‚ÄIDEã‚Åw[ƒ‚ƒWƒ…[ƒ‹‚̓ǂݞ‚Ý’†‚É JIT Å“K‰»‚ð—}§‚·‚é]x‚ð•ÏX‚·‚邯A
Šm‚©‚ÉRelease/Debug‚Ì2Ží—Þ‚Éi‚ê‚éB
Debug‚¾‚©‚ç‚Æ‚¢‚Á‚ÄA‘S‚­Å“K‰»‚ª‚©‚©‚ç‚È‚¢‚킯‚Å‚à‚È‚¢‚悤‚¾B
i1s“à‚È‚çÅ“K‰»‚ª‚©‚©‚éHj

ŽQl‚ÉAReleaseƒrƒ‹ƒh‚ÌŠY“–•”•ª‚Ì‹tƒAƒZƒ“ƒuƒ‹‚͈ȉºB
Ϙa‚ªŠg’£”{¸“x‚Ås‚í‚êA‚»‚Ì‚Ü‚Ü fsqrt ‚Å•½•ûª‚ªŽæ‚ç‚ê‚éB
iŠÖ”‚²‚ƃCƒ“ƒ‰ƒCƒ“‰»‚³‚ê‚Ä‚¢‚é‚̂ŃAƒhƒŒƒX‚ª’†“r”¼’[‚¾‚ªj
double retval = calc_norm_and_regulate(count, vec, false);
0000003e fldz
00000040 xor edx,edx
00000042 test esi,esi
00000044 jle 00000056
00000046 lea eax,[esp+28h]
0000004a fld qword ptr [eax+edx*8]
0000004d fmul st(0),st
0000004f faddp st(1),st
00000051 inc edx
00000052 cmp edx,esi
00000054 jl 00000046
00000056 fsqrt
00000058 fstp qword ptr [esp+10h]

314 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/19(…) 17:24:44.24 ID:GzaYiinu.net]
VC++2008‚¾‚¯‚ÇA“Ë‘Rˆê•”‚̃tƒ@ƒCƒ‹‚¾‚¯ƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚ª“ü‚ç‚È‚­‚È‚Á‚½EEE
.ncbÁ‚µ‚½‚èA‚»‚̃vƒƒWƒFƒNƒg‚¾‚¯ƒŠƒrƒ‹ƒh‚µ‚½‚¯‚Ç’¼‚ç‚È‚¢
‘SƒŠƒrƒ‹ƒh‚·‚ê‚΂¨‚‹H



315 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/19(…) 18:59:08.26 ID:KTUM/Tgt.net]
>>305
ª–{“I‚ȉðŒˆô‚Ƃ͈Ⴄ‚ª
uƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚ÍŒ»Ý‚ÌÝ’è‚ł̓qƒbƒg‚µ‚Ü‚¹‚ñBƒ\[ƒXƒR[ƒh‚ªŒ³‚̃o[ƒWƒ‡ƒ“‚ƈقȂè‚Ü‚·Bv
‚È‚ç
[ƒIƒvƒVƒ‡ƒ“] ‚Ì[ƒfƒoƒbƒO]‚©‚ç[Œ³‚̃o[ƒWƒ‡ƒ“‚ÆŠ®‘S‚Ɉê’v‚·‚éƒ\[ƒX ƒtƒ@ƒCƒ‹‚ð•K—v‚Æ‚·‚é] ‚ðƒIƒt‚Å

316 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/20(–Ø) 12:44:39.12 ID:rLmEYUhk.net]
>>306
‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B

Œ‹‹ÇA‘SƒŠƒrƒ‹ƒh‚Å‚à’¼‚ç‚È‚©‚Á‚½‚Ì‚ÅA.sln ‚Æ .vcproj ˆÈŠO‘S•”Á‚µ‚Ä
Windows‚àÄ‹N“®‚µ‚ÄŠ®‘S‚ɂ܂Á‚³‚ç‚Èó‘Ô‚É‚µ‚Ä‘Sƒrƒ‹ƒh‚µ‚½‚ç’¼‚è‚Ü‚µ‚½‚ªA
‚»‚Ì‚¤‚¿‚Ü‚½ƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚ª“ü‚ç‚È‚­‚È‚Á‚½‚Ì‚ÅA>>306‚Ì•û–@‚Å
‰ñ”ð‚µ‚Ü‚µ‚½B

317 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2019/06/19(…) 14:12:16.93 ID:Yoy0IPRe.net]
‚¨A‚¨‚¤

318 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2019/10/04(‹à) 14:14:25.88 ID:gozwERy2.net]
C++@CLR‚ÌWindowsƒtƒH[ƒ€ƒAƒvƒŠì‚Á‚Ă邯A
ƒCƒxƒ“ƒg‚Æ‚©‹L“ü‚·‚邯‚«ƒCƒ“ƒfƒ“ƒg‚ª‚¨‚©‚µ‚¢iƒXƒy[ƒX‚ª1‚•t‚­j‚ñ‚Å‚·‚ªA
‚±‚ê‚𒼂·•û–@‚Á‚Ä‚ ‚è‚Ü‚·‚©H

319 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2019/10/06(“ú) 21:09:30.88 ID:xhkeezXX.net]
ƒeƒ“ƒvƒŒ[ƒg“ÁŽê‰»‚Á‚ÄVisualC++2008 SP1 ‚ł͂ł«‚È‚¢‚Å‚·‚©H

320 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2019/10/06(“ú) 21:48:55.66 ID:xhkeezXX.net]
>310
https://programming-place.net/ppp/contents/cpp/language/023.html
‚±‚¿‚炳ł«‚Ü‚µ‚½AƒXƒŒ‰˜‚µ‚·‚݂܂¹‚ñ

321 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2021/04/20(‰Î) 20:00:45.05 ID:rVJPu0WM.net]
‚í‚©‚ç‚È‚¢‚̂ŋ³‚¦‚Ä‚­‚¾‚³‚¢B
ƒVƒŠƒAƒ‹’ÊM‚ð‚·‚éƒvƒƒOƒ‰ƒ€‚ðì‚肽‚­A
VS2008‚É‚ÄAuSerialPortv‚ðŽg‚¦A‚Æ‚¢‚¤‚Ì‚ª
ƒTƒCƒg‚É‚ ‚Á‚½‚̂ł·‚ªA
ƒc[ƒ‹ƒ{ƒbƒNƒX‚ÉSerialPort‚ª‚ ‚è‚Ü‚¹‚ñB
’ljÁ‚·‚é•û–@‚ð‹³‚¦‚Ä‚­‚¾‚³‚¢B

Žg—pŠÂ‹«FVS2008 C++ MFCƒAƒvƒŠƒP[ƒVƒ‡ƒ“

322 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2021/04/20(‰Î) 20:36:15.98 ID:mPkgRyxP.net]
‚Ë‚¥‚Ë‚¥¡“ú‚͉½ˆ‚Ü‚ÅÀ‚±‚¤‚©‚È`

COM‚̓lƒCƒeƒBƒu‚Ȃ̂©‚Ë

323 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2021/04/23(‹à) 21:39:54.21 ID:OsunfFOw.net]
>>312
SerialPort‚ÍŽg‚Á‚½‚±‚Æ–³‚¢‚©‚ç’m‚ç‚ñ‚ªA
‚»‚Ì’ö“x‚Ì‚±‚Æ‚ðŽ©—Í‚Å‰ðŒˆo—ˆ‚È‚¢“z‚ª¡XVS2008‚Å‚µ‚©‚àMFC‚Æ‚©–³—‚¾B
ƒTƒCƒg‚ðŽQl‚É‚·‚é‚Ì‚à‚¢‚¢‚ªA“ú•t‚Í•K‚¸Œ©‚邿‚¤‚É‚µ‚ëB
.NET serial port ‚ÅŒŸõ‚·‚邯ˆÈ‰º‚ª“–‚½‚邵A¡‚Ȃ畒ʂɂ±‚ꂾ‚ÆŽv‚¤‚ªB
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.ports.serialport?view=dotnet-plat-ext-5.0


‚Ç‚¤‚¹Œ©‚¦‚½“WŠJ‚¾‚µA–Ê“|‚¾‚©‚çæ‚ÉŒ¾‚Á‚Ä‚¨‚­‚ªA
‚¨‘O‚Ì‚â‚Á‚Ă邱‚Ƃ͉SŽÒ‚Ì‚ ‚é‚ ‚é

E‚»‚à‚»‚à‚â‚è•û‚ðŠÔˆá‚Á‚Ä‚¢‚é‚Ì‚ÉA‚»‚êˆÈŠO‚Ì‰ðŒˆ•û–@‚ð”F‚߂Ȃ¢
E³‚µ‚¢‚â‚è•û‚ð‹³‚¦‚Ä‚àA‚»‚ê‚Í•·‚¢‚ĂȂ¢‚Æ‚µ‚Ď󂯕t‚¯‚È‚¢

‚¾B‚¾‚©‚ç‚Ç‚¤‚¹‚±‚ê‚©‚ç•¶‹å‚àŒ¾‚¤‚Ì‚¾‚낤‚ªAd‚˂Ⱦ‚¤‚ªA
¡X‚»‚̊‹«(VS2008+MFC)‚Í‚ ‚蓾‚È‚¢‚­‚ç‚¢‚̈Ù킳‚¾B
‚¨‘O‚ª‰SŽÒ‚ʼn½‚à’m‚ç‚È‚¢‚¾‚¯‚È‚çAí‚ÉÅV‚̊‹«‚ðŽg‚¤‚悤‚ÉS‚ª‚¯‚ëB‚»‚ꂾ‚¯‚Å–³‘ʂȂ±‚ƂɛƂè‚É‚­‚­‚È‚éB
‚»‚̊‹«‚ÉS‚鉽‚ç‚©‚Ì——R‚ª‚ ‚èA‚»‚ê‚ð‹­‚¢‚Ä‚«‚½ãŽi“™‚ª‹‚é‚̂ȂçA‚Ü‚¸‚»‚¢‚‚ɕ·‚¯B
•·‚­l‚ª‹‚È‚¢‚̂ȂçA¡‚Ì‚¨‘O‚É‚»‚̊‹«‚Å‚â‚è‚«‚é”\—͂͂Ȃ¢‚©‚ç’ú‚ß‚ëB

324 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2022/02/16(…) 02:27:10.00 ID:ky7QDxn6.net]
‹L”OƒJƒLƒR



325 –¼‘OF‰ß‹ŽƒƒO š [[‰ß‹ŽƒƒO]]
¡ ‚±‚̃XƒŒƒbƒh‚Í‰ß‹ŽƒƒO‘qŒÉ‚ÉŠi”[‚³‚ê‚Ä‚¢‚Ü‚·






[ V’…ƒŒƒX‚̎擾/•\ަ (agate) ] / [ Œg‘єŠ]

‘O100 ŽŸ100 ÅV50 £ [ ‚±‚̃XƒŒ‚ðƒuƒbƒNƒ}[ƒNI Œg‘тɑ—‚é ] 2ch‚Ìread.cgi‚Ö
[{” ŋߗ§‚Á‚½ƒXƒŒ•”M‚¢ƒXƒŒˆê—— : {” ŋߗ§‚Á‚½ƒXƒŒ^‹LŽÒ•ʈꗗ]i LÍMjƒ144KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
’S“–:undef