[•\ަ : ‘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

152 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/01/20(“y) 23:47:48.29 ID:bSTKludV.net]
‚Ü‚¾ƒJƒXƒ^ƒ€ƒrƒ‹ƒh‚ɂ͑g‚Ýž‚ñ‚Å‚¢‚È‚¢‚ªAƒXƒNƒŠƒvƒg‚ð쬂µA“®ì‚·‚邱‚Æ‚ðŠm”F‚µ‚½B
’mŒb‚ði‚Á‚Ä‚­‚ꂽl‚Í‚ ‚肪‚Æ‚¤BŒ»Ý‚̉ðŒˆô‚͈ȉºB

E#define LAMBDA ‚ŃCƒ“ƒ‰ƒCƒ“‚Ì“WŠJ‚ðs‚¤B
EƒNƒ‰ƒ

153 –¼‘OFX錾•”‚̓XƒNƒŠƒvƒg‚Å쬂µA‚±‚ê‚ðinclude‚·‚éB

VS2017‚Éã‚°‚Ä‚àLAMBDAƒ}ƒNƒéŒ¾•”‚¾‚¯‚Ì•ÏX(1s)‚Åςޗ\’è‚Ȃ̂ÅA‚Ü‚ ‚Ü‚ ‚©‚ÆB
‚Ƃ肠‚¦‚¸‚±‚ê‚Å—lŽqŒ©‚µ‚Ü‚·B
[]
[‚±‚±‰ó‚ê‚Ă܂·]

154 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/04/10(‰Î) 07:51:46.77 ID:25Me0atb.net]
ÅI—ñŽÔ‚Éæ‚è’x‚ê‚é‚È

VC++2008ExpressƒTƒ|[ƒgØ‚ê‚܂ł ‚Æ1“úB
2018”N4ŒŽ11“úi…j‚ŃTƒ|[ƒgI—¹B

C³ƒpƒbƒ`‚Ì“üŽè‚ÌI‚í‚Á‚ĂȂ¢l‚Í–Y‚ê‚È‚¢‚悤‚ÉB

155 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/04/10(‰Î) 14:36:15.41 ID:JIHFaEMv.net]
GJ

156 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/04/11(…) 01:33:09.61 ID:PizNPnSY.net]
•KŽ€‚¾‚È‚Ÿ‚—

157 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/04/11(…) 13:05:30.31 ID:Gexxa1fK.net]
https://forest.watch.impress.co.jp/docs/news/1116235.html

uMicrosoft Visual Studio 2008v‚̃Tƒ|[ƒg‚ªI—¹ `–³ž”ÅuExpress Editionv‚à

uMicrosoft SQL Server Compact 3.5v‚Ȃǂà‘ÎÛ

158 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/04/11(…) 13:06:06.48 ID:bG1z7LTF.net]
‚ ‚ I‚í‚Á‚½‚©
‰³‚Å‚µ‚½

159 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/04/11(…) 13:26:11.45 ID:bG1z7LTF.net]
‚Ä‚“‚”

160 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/04/12(–Ø) 14:51:25.15 ID:nqXIWDjI.net]
s ŒãŒpŠJ”­ŠÂ‹«‚Ì‚²ˆÄ“à t

LinuxMint‚̃_ƒEƒ“ƒ[ƒh‚Í‚±‚¿‚ç‚©‚çB

Main Page - Linux Mint
https://linuxmint.com/
https://linuxmint.com/download.php
---------

AGK–³—¿ŽŽ—p”ł̔z•zŠJŽn(ƒŠƒ“ƒNæ‚ÉWindows¤Mac¤Linux”ł̃tƒ@ƒCƒ‹‚ª’¼Ú’u‚¢‚Ä‚ ‚é)

AppGameKit - Free Trial Version
https://www.appgamekit.com/trial

–³—¿ŽŽ—p”Å

AppGameKit–³—¿ƒgƒ‰ƒCƒAƒ‹”łͤAppGameKit‚ÌŽå—v‚ȗ̈悷‚ׂĂɃAƒNƒZƒX‚Å‚«‚邽‚ߤ
Š®‘S‚É•]‰¿‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·¡Š®‘S”ł̗L—¿”Å‚É‚Í¤ŽŸ‚ÌŽå—v‹@”\‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·¡

¥ Android¤iOS¤HTML5‚ɃvƒƒWƒFƒNƒg‚ðƒGƒNƒXƒ|[ƒg‚·‚é
¥ ƒAƒvƒŠ‚ðƒfƒoƒCƒX‚É’¼Úƒuƒ[ƒhƒLƒƒƒXƒg‚·‚é
¥ ƒRƒ“ƒpƒCƒ‹‚³‚ꂽƒvƒƒWƒFƒNƒg‚©‚çƒEƒH[ƒ^[ƒ}[ƒN‚ð휂·‚é



161 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/04/16(ŒŽ) 00:56:57.36 ID:CadfvnK3.net]
Wine‚ÅPassmark‚ÆHDbench‚ðŽŽ‚µ‚½‚Æ‚±‚ëAƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh«”\‚ÍWindows‚æ‚èŽáб‚‚­Aƒ}ƒ‹ƒ`ƒRƒA«”\‚Í”¼•ª’ö“x‚É—¯‚Ü‚Á‚½B
‚¨‚»‚ç‚­Wine“à•”ˆ—‚Ì“s‡‚ÆŒ¾‚¤‚±‚Ƃɂ—

‚Ü‚½ADirectXƒeƒXƒg‚Í’Ê‚ç‚È‚©‚Á‚½BGDIƒNƒ‰ƒX‚Ì‚ÝB

162 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/04/22(“ú) 03:49:49.80 ID:CAx4oxnE.net]
c‚Á‚ÄŒ¾‚¤–ó‚ÅA‘‘¬Linux‚̃pƒtƒH[ƒ}ƒ“ƒXƒeƒXƒgB

64x64ƒsƒNƒZƒ‹‚Ì2DƒXƒvƒ‰ƒCƒg‚Ì•\ަ–‡”‚ðƒJƒEƒ“ƒg‚µ‚ÄAƒpƒtƒH[ƒ}ƒ“ƒX‚ðŒv‘ª‚µ‚Ă݂悤B
ƒ_ƒEƒ“ƒ[ƒh‚͈ȉº‚ÌƒŠƒ“ƒN‚©‚ç‚Ç‚¤‚¼B
upload.saloon.jp/src/up27011.zip

Firefoxƒuƒ‰ƒEƒU‚̉Eã‚Ƀ_ƒEƒ“ƒ[ƒhƒ}[ƒNi«j‚Ì•t‚¢‚½ƒAƒCƒRƒ“‚ðƒNƒŠƒbƒN‚µ‚ÄAƒtƒ@ƒCƒ‹
ƒAƒCƒRƒ“‚ðƒNƒŠƒbƒN‚·‚邯Azipƒtƒ@ƒCƒ‹‚Ì“ü‚Á‚½ƒtƒHƒ‹ƒ_‚ª•\ަ‚³‚ê‚é‚Ì‚ÅA‰EƒNƒŠƒbƒN‚µ‚Ä
u Extract Here v ‚ð‘I‚ÔB

ŽŸ‚ÉAu agk_sample v ‚ÆŒ¾‚¤ƒtƒHƒ‹ƒ_‚ªì¬‚³‚ê‚é‚Ì‚ÅAƒ_ƒuƒ‹ƒNƒŠƒbƒN‚·‚éB

ƒtƒHƒ‹ƒ_‚Ì’†‚É u abc v ‚ÆŒ¾‚¤Šg’£Žq‚̂Ȃ¢ƒtƒ@ƒCƒ‹Au media v ‚ÆŒ¾‚¤ƒ‰ƒ“ƒ^ƒCƒ€‚Ì“ü‚Á‚½
ƒtƒHƒ‹ƒ_‚ªì¬‚³‚ê‚Ä‚¢‚éB

u abc v ‚ÆŒ¾‚¤Šg’£Žq‚̂Ȃ¢ƒtƒ@ƒCƒ‹‚ªAŽÀsƒtƒ@ƒCƒ‹‚ÅA‚±‚ê‚ð–À‚킸ƒ_ƒuƒ‹ƒNƒŠƒbƒN‚·‚ê
‚΂悢‚—

‚¾‚¢‚½‚¢2•ª‚®‚ç‚¢‚ÅÅ‘å•\ަ–‡”‚ªˆÀ’è‚·‚éB
ƒvƒƒOƒ‰ƒ€‚ÌI—¹‚Í [ ESC ] ƒL[B

Celeron G1820 + Intel HD–³ˆó ‚Å1500–‡’ö“xB

163 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/05/23(…) 19:42:34.90 ID:Au5e7VGg.net]
–l‚Ì’m‚臂¢‚Ì’m‚臂¢‚ª‚Å‚«‚½ƒpƒ\ƒRƒ“ˆê‘ä‚Å‚¨‹àŽ‚¿‚ɂȂê‚é‚â‚è•û
–ð‚É—§‚‚©‚à‚µ‚ê‚Ü‚¹‚ñ
ƒO[ƒOƒ‹‚ÅŒŸõ‚·‚邯‚¢‚¢‚©‚àwƒlƒbƒg‚ʼn҂®•û–@@ƒ‚ƒjƒAƒŒƒtƒkƒmx

CRP7I

164 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/05/24(–Ø) 10:53:48.52 ID:cPlRxlDn.net]
CRP7I

165 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/05/25(‹à) 19:20:37.97 ID:TsdeULHr.net]
‚ł͂ł͂—

Intel Pentium G5 CoffeeLake ‘‡ƒXƒŒ
anago.open 2ch.net/test/read.cgi/jisaku/1526884213/

166 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/07/04(…) 22:48:21.01 ID:gFgZc5FG.net]
TJH

167 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/07/06(‹à) 12:24:57.09 ID:uTPDH9XV.net]
TJH

168 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/08/23(–Ø) 09:04:57.51 ID:by5uxKdK.net]
VC9 SP1 Hotfix For The vector<function<FT>> Crash
‚ªƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚È‚¢‚̂ł·‚ªA
‚ǂȂ½‚©ƒAƒbƒvƒ[ƒh‚µ‚Ä‚¢‚½‚¾‚¯‚È‚¢‚Å‚µ‚傤‚©H
https://blogs.msdn.microsoft.com/vcblog/2008/12/17/vc9-sp1-hotfix-for-the-vectorfunctionft-crash/#9234449

169 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/13(–Ø) 23:46:46.29 ID:MPXnmy/B.net]
‹N“®‚ÌŽd•û‚Å•‚“®¬”“_‰‰ŽZ‚Ɍ뷂ª”­¶‚·‚é‚Ì‚¾‚¯‚ÇA——R‚ª•ª‚©‚él‹‚Ü‚·‚©H

¡‚̂Ƃ±‚ëA

A. Debugƒrƒ‹ƒh‚̃oƒCƒiƒŠ‚ðƒ_ƒuƒ‹ƒNƒŠƒbƒN‚µ‚Ä‹N“®
B. Releaseƒrƒ‹ƒh‚̃oƒCƒiƒŠ‚ðƒ_ƒuƒ‹ƒNƒŠƒbƒN‚Å‹N“®
C. Debugƒrƒ‹ƒh‚Ü‚½‚ÍReleaseƒrƒ‹ƒh‚ÅF5‚Å‹N“®

‚Ì3Ží—Þo—ˆ‚Ä‚éB‚»‚ꂼ‚ê”÷–­‚Ȍ뷂¾B(double‚̉ºˆÊƒrƒbƒgj
A‚ÆB‚̈Ⴂ‚ɂ‚¢‚Ă͒ú‚߂Ă¢‚½‚Ì‚¾‚ªA(‚È‚¨—¼•û‚Æ‚à/fp:precise)
ŽÀ‚ÍC‚à‚ ‚邯‹C‚¢‚Ä‚µ‚Ü‚Á‚½B

‚È‚¨AƒoƒCƒiƒŠ‚ðƒ_ƒuƒ‹ƒNƒŠƒbƒN‚µ‚Ä‹N“®A‚»‚ê‚ÉIDE‚ðƒAƒ^ƒbƒ`‚µ‚Ä‚àŒ‹‰Ê‚͕ςí‚ç‚È‚¢B
‚»‚ꂼ‚êA‚Ü‚½‚ÍC‚ªo‚éB

‰½‚©IDE‚ÌÝ’è‚ðŠÔˆá‚Á‚Ä‚¢‚é‚Ì‚¾‚ÆŽv‚¤‚Ì‚¾‚¯‚Çc

170 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/14(‹à) 12:43:29.26 ID:5xDSXwp0.net]
0fill‚µ‚ĂȂ¢‚ñ‚¾‚ë



171 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/14(‹à) 13:05:12.93 ID:XcO59d50.net]
ÄŒ»«‚Í100%‚Ȃ̂ÅA‰Šú‰»‚̃~ƒX‚ł͂Ȃ¢Bi‚ÆŽv‚Á‚Ä‚¢‚éj

‰‰ŽZ“r’†‚ÌŒ‹‰Ê‚ð double ‚È‚ç16i16Œ…‚ŃeƒLƒXƒg‚Ƀ_ƒ“ƒv‚µ‚Ä‚¢‚éB
”’l‚¾‚¯‚ł͂Ȃ¢‚ª500MB’ö“x‚̃tƒ@ƒCƒ‹‚ªo—Í‚³‚êA
diff ‚ðŽæ‚é‚±‚Ƃɂæ‚背ƒOƒŒƒbƒVƒ‡ƒ“ƒeƒXƒg‚ð‚µ‚Ä‚¢‚éB
¡‚̂Ƃ±‚ëAA/B/C‚Ì3Ží—Þ‚µ‚©o‚È‚¢B
‰Šú‰»–Y‚ê‚Ȃ炱‚¤‚͂Ȃç‚È‚¢B(‚Í‚¸)

172 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/14(‹à) 13:09:49.07 ID:Qw2nkUqU.net]
MS‚̃Gƒ“ƒWƒjƒA‚ðM‚¶‚é‚©AÄŒ»‰Â”\‚ȃ\[ƒX‚àŽ¦‚³‚¸–â‘肾–â‘肾Œ¾‚Á‚Ă邯‚±‚Ì”n‚Ìœ‚Æ‚à’m‚ê‚È‚¢“z‚ð
M‚¶‚é‚©‚Á‚ÄŒ¾‚í‚ꂽ‚ç–À‚¤‚±‚ƂȂ­‘OŽÒ‚ðM‚¶‚éw

173 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/14(‹à) 14:43:10.29 ID:XcO59d50.net]
‰´‚ÍIDE‚̃oƒO‚¾‚Ƃ͎v‚Á‚Ä‚¢‚È‚¢B
‰½‚©IDE‚Ìݒ肪‚ ‚Á‚ÄA‰´‚ª‚»‚ê‚ð“K؂ɂâ‚Á‚ĂȂ¢‚Ì‚¾‚ÆŽv‚Á‚Ä‚¢‚éB

FXŒ©‚½ŒÀ‚èA‰´‚Í /fp:precise ‚µ‚©”­Œ©o—ˆ‚È‚©‚Á‚½B
‚½‚¾‚µ‚±‚ê‚͈ꉞ“KØ‚Éݒ肳‚ê‚Ä‚¢‚éB
‘¼‚ɂȂ¢‚©‚ÈH‚Æ‚¢‚¤‚±‚ÆB

174 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/14(‹à) 15:49:43.21 ID:cyu8WCuc.net]
IDE‚¶‚á‚È‚­‚ăRƒ}ƒ“ƒhƒ‰ƒCƒ“‚©‚çƒRƒ“ƒpƒCƒ‰‚Å’¼ÚƒRƒ“ƒpƒCƒ‹‚µ‚Ä‚àˆêH

175 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/14(‹à) 16:14:47.18 ID:XcO59d50.net]
‚Ç‚¤‚¢‚¤ˆÓ–¡H
(‚Ç‚ê‚Æ‚Ç‚ê‚̈Ⴂ‚ɃtƒH[ƒJƒX‚µ‚ë‚ÆH)

‰´‚̓oƒCƒiƒŠ‚É–â‘肪‚ ‚邯‚ÍŽv‚Á‚Ä‚¢‚È‚¢B
‰½‚ç‚©‚Ì——R‚Å•‚“®¬”“_‚̃‚[ƒh‚ªØ‚è‘Ö‚¦‚ç‚ꂽ‚肵‚ĂȂ¢‚©‚ð‹^‚Á‚Ä‚éB
‚¾‚©‚çIDE‚ÌÝ’è‚Æ‚©A‚»‚Á‚¿‚ðŒ©‚Ä‚éB

Release/Debug‚̃oƒCƒiƒŠ‚Í“–‚½‚è‘O‚¾‚ªˆá‚Á‚Ä‚éB
/O2‚Æ/Od“™‚¾B
‚½‚¾‚»‚ê‚Å‚à /fp:precise ‚ÌꇂÍ
•‚“®¬”“_‚̉‰ŽZ‡˜‚ð“ü‚ê‘Ö‚¦‚È‚¢”͈͂ÅÅ“K‰»‚³‚ê‚鎖‚ɂȂÁ‚Ä‚¢‚éB
‹tƒAƒZƒ“ƒuƒ‰‚ÍŒ©‚½‚¯‚Ç‚¿‚å‚Á‚ƃOƒ`ƒƒƒOƒ`ƒƒ‚·‚¬‚Ă悭•ª‚©‚ç‚È‚©‚Á‚½B
(Œ©‚½”͈͂ł͉‰ŽZ‡˜‚Ì“ü‚ê‘Ö‚¦‚͂Ȃ¢‚悤‚ÉŽv‚¦‚½j

176 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/14(‹à) 16:25:44.73 ID:2giHKuhd.net]

177 –¼‘OF="reply_link">>>167
doubleŒ^‚ðŽg‚Á‚Ä‚¢‚Ä‚àASSE‚ÌXMMƒŒƒWƒXƒ^‚ȂǂðŽg‚¤ê‡AÌ‚Ìfld, fst, fmul‚ȂǂðŽg‚¤ê‡‚æ‚èŠî–{“I‚ɂ͸“x‚ª—Ž‚¿‚éB

ŠÛ‚߂̕ûŒü‚àŽlŽÌŒÜ“üA³•‰‚Ç‚¿‚ç‚©‚Ì•ûŒü‚Ö‚ÌŠÛ‚ß‚âØ‚èŽÌ‚ĂȂǂ̑¼AŠm‚©A¸“x‚ð‹C‚É‚µ‚È‚¢A‚È‚ñ‚ăIƒvƒVƒ‡ƒ“‚à‚ ‚Á‚½‹C‚ª‚·‚éBƒQ[ƒ€‚ÅŽg‚¤‚±‚Æ‚ð‘z’肵‚Ä‚¢‚é‚炵‚¢B

SSE—p‚ÉÅ“K‰»‚ðŠ|‚¯‚邯A‘¬“x‚Íオ‚邪¸“x‚Í—Ž‚¿‚é‚©‚à’m‚ê‚È‚¢B
[]
[‚±‚±‰ó‚ê‚Ă܂·]

178 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/14(‹à) 17:45:18.51 ID:XcO59d50.net]
>>174
¡‚͈̔͂łÍSSE‚ÍŽg‚Á‚Ä‚¢‚È‚¢i‚Í‚¸)
uŠg’£–½—߃Zƒbƒg‚ð—LŒø‚É‚·‚év‚ÍuÝ’è–³‚µv‚ɂȂÁ‚Ä‚¢‚éBi‘½•ªƒfƒtƒH‚̂܂Üj
Œ©‚½–Ú‘S•”x87‚ªo‚Ä‚½‚µB

‚â‚Á‚ÏRelease/Debug‚̈Ⴂ‚©‚çU‚ß‚ë‚Á‚ÄŠ´‚¶‚©H
‰´‚àF5‹N“®‚ÅŒ‹‰Ê‚ªˆÙ‚È‚é‚Á‚Ă̂͑S‚­—\‘z‚µ‚ĂȂ©‚Á‚½‚µBi‚½‚¾‚µ‚±‚¿‚ç‚Ì–â‘肾‚낤‚¯‚Çj
‰‰ŽZ•”•ª‚Íꇂɂæ‚Á‚Ä‚ÍSSE‚̃AƒZƒ“ƒuƒ‰‚É·‚µ‘Ö‚¦‚é‚Ì‚ÅA
–â‘è‚ɂȂéꇂɂÍARelease/Debug‚̈Ⴂ‚Í‚±‚ê‚Å‹zŽû‚·‚é‚‚à‚肾‚Á‚½B
(‚±‚ê‚Í‚Pƒ–ŒŽŒã‚É‚â‚é‚©‚àj

179 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/14(‹à) 17:48:23.40 ID:HVgt1gkj.net]
•‚“®¬”“_‚̌뷂ðl—¶‚É“ü‚ê‚ĂȂ¢‚Æ‚¢‚¤ƒC[ƒW[‚ÈŽd—lƒoƒO‚Å‚·‚ËB

180 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/14(‹à) 21:39:03.40 ID:fXySkelb.net]
ÄŒ»‚·‚麰ÄÞ‚ð‚݂Ȃ¢‚ƂȂɂà‚í‚©‚é‚킯‚ª‚È‚¢
’áŠw—ð’mŒb’x‚ꂪ‘‚­º°ÄÞ‚È‚ñ‚©‚Ȃɂð‚â‚Á‚Ă邩•ª‚©‚ç‚È‚¢‚©‚ç‚È

‚²‚¿‚Ⴒ‚¿‚á‚¢‚Á‚ĂȂ¢‚ÅÄŒ»‚·‚麰ÄÞ‚ð‚ ‚°‚È‚³‚¢



181 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 06:26:55.94 ID:/OsufeBT.net]
ŒŽ•À‚݂Ȉӌ©‚¾‚¯‚ÇA
uÇó‚ðÄŒ»‚Å‚«‚éŬ‚̃\[ƒX‚ƉŠúƒf[ƒ^A‚»‚ê‚ÆƒRƒ“ƒpƒCƒ‹ŠÂ‹«v
‚܂Ũ‚è‹l‚߂Ă݂é‚Ì‚ª‘“¹‚¶‚á‚È‚¢‚©‚ÈB

‚¿‚å‚­‚¿‚å‚­”­¶‚·‚鎖—á‚È‚çA‰ðŒˆô‚ð’m‚Á‚Ä‚é’N‚©‚ª‹³‚¦‚Ä‚­‚ê‚Ă邩‚ÆB
T––A‚æ‚葽‚­‚Ìl‚ªŽ¿–â‚ðŒ©‚é‚±‚Æ‚ðŠú‘Ò‚µ‚đ҂Žè‚à‚ ‚邯‚ÇB

182 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 08:56:57.28 ID:9ZmI9OgI.net]
‚æ‚èŠî–{‚É—§‚¿•Ԃ낤
‚»‚à‚»‚àŒë·‚Í‚ ‚é‚Ì‚©H

ŒvŽZŒ‹‰Ê‚ð‰½‚ðŽg‚Á‚Ăǂ¤o—Í‚µ‚Ä‚¢‚é‚©‚¾‚¯‚Å‚àƒ\[ƒX‚ðŒ©‚¹‚Ä‚­‚ê

183 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 13:36:34.65 ID:heijdb7v.net]
>>175
x87‚Å‚àŒë·‚ðŠÛ‚ß‚é•û–@‚ð fpu control word ‚ÅÝ’è‚Å‚«‚鎖‚Ío—ˆ‚éB
ŽlŽÌŒÜ“ü‚ÆØ‚èŽÌ‚ĂȂǂðØ‚è‘Ö‚¦‚ç‚ê‚éB

184 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 13:42:47.95 ID:heijdb7v.net]
fpu control word ‚ÅAŠÛ‚ß•û–@‚ÆA¸“x‚Ì“ñ‚Â‚ð“Æ—§‚ÉÝ’è‚Å‚«‚éB

‚±‚̸“x‚ÌÝ’è‚ÅAƒƒ‚ƒŠã‚Ì•\Œ»‚ªdoubleŒ^‚Å‚àAŒvŽZŽž‚Ìfpu‚Ì“à•”¸“x‚ª•Ï‚í‚Á‚Ä‚­‚éB

•’Ê‚Í64bit double‚ɑ΂µ‚ÄAfpu“à•”‚Å‚Í80bit‚̸“x‚ÅŒvŽZ‚·‚éB‰¼”•”‚Ìbit”‚ÍAŠm‚©A‚»‚ꂼ‚êA53BITA64BIT‚¾‚Á‚½‚©‚ÈB

185 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 14:05:09.61 ID:heijdb7v.net]
Intel® 64 and IA-32 Architectures Software Developerfs Manual

[Vol 1]

11.6.8 Compatibility of SIMD and x87 FPU Floating-Point Data Types

SSE and SSE2 extensions operate on the same single-precision and double-precision floating-point data types that
the x87 FPU operates on. However, when operating on these data types, the SSE and SSE2 extensions operate on
them in their native format (single-precision or double-precision), in contrast to the x87 FPU which extends them
to double extended-precision floating-point format to perform computations and then rounds the result back to a
single-precision or double-precision format before writing results to memory. Because the x87 FPU operates on a
higher precision format and then rounds the result to a lower precision format, it may return a slightly different
result when performing the same operation on the same single-precision or double-precision floating-point values
than is returned by the SSE and SSE2 extensions. The difference occurs only in the least-significant bits of the
significand.

186 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 14:14:58.92 ID:heijdb7v.net]
>>182
‘‚¢‚Ä‚ ‚éˆÓ–¡‚ÍA

uSSE‚âSSE2‚¾‚ÆAfloat(32BIT)‚âdouble(64BIT)‚̂܂܌vŽZ‚·‚邪Ax87 fpu‚¾‚ÆA‚à‚Á‚Æ‚‚¢¸“x‚Å‚ ‚邯‚±‚ë‚Ì
@@wdouble extended-precision floating-point formatiŠg’£”{¸“x•‚“®¬”“_ƒtƒH[ƒ}ƒbƒg:80BIT)x
‚ÅŒvŽZ‚ðŽÀs‚µ‚ÄAŠÛ‚߂Ă©‚çAfloat‚âdouble‚É–ß‚·B
‚»‚Ì‚½‚ßASSE/SSE2 ‚Æ x87 fpu‚ł͌‹‰Ê‚ª•Ï‚í‚邱‚Æ‚ª‚ ‚éB
‚µ‚©‚µA‚»‚Ìê‡‚Å‚àŒ‹‰Ê‚̈Ⴂ‚ÍA‰¼”•”‚Ì LSB (Å‚à‰¿’l‚̬‚³‚¢BIT)‚Ì1BIT‚É‚¾‚¯Œ»‚ê‚éBv

‚Æ‚¢‚¤‚悤‚ÈŽ–B

187 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 16:09:28.75 ID:aC3C7hdp.net]
—g‚°‘«Žæ‚肾‚¯‚ÇLSB‚ðuÅ‚à‰¿’l‚ª¬‚³‚¢v‚Á‚Ä’¼–ó‚Í‚¢‚©‚ª‚È‚à‚Ì‚©‚Èw
•’Ê‚ÉʼnºˆÊƒrƒbƒg‚¶‚á‚È‚¢‚ÌH

‚Æ‚±‚ë‚Å
> the least-significant bits
‚±‚ꉽ‚Å•¡”Œ`‚Ȃ̂©‚Ë

188 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2018/09/15(“y) 16:14:15.89 ID:AVfR6YnT.net]
2‚Ì0悾‚©‚çŽÀÛ‰¿’l‚ª’á‚¢

ã‚ÍMVB‚Å

189 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 17:07:56.98 ID:UR1d6CKz.net]
>>183
‚ ‚肪‚Æ‚¤B
‚½‚¾ˆê‰ž‚»‚ê‚Í’m‚Á‚Ä‚ÄA‚»‚Ìã‚ÅAIDE‚̊‹«Ý’è“™‚ð‹^‚Á‚Ä‚¢‚éB

>>178
‚Ƃ͂¢‚¦’n“¹‚É’H‚Á‚ÄA“¯—l‚ÌÄŒ»ƒR[ƒh‚ðì‚邱‚ƂɬŒ÷‚µ‚»‚¤‚¾B
‚à‚¤­‚µ’²‚ׂÄA‘½•ª¡”Ó‚©–¾“úŒß‘O’†‚Éã‚°‚éB

190 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 17:12:32.47 ID:heijdb7v.net]
>>184
uThe difference occurs only in the least-significant bits of the significand.v

‚±‚ê‚ÍASSE ‚Ìê‡‚Ì LSB ‚ÆAx87 FPU ‚Ìê‡‚Ì FPU ‚Ì2Ží—ނ𓪂̒†‚É‘z’肵‚Ä‚¢‚邯Žv‚í‚ê‚éB

SSE: a1 = 1.xxxxxxxxz * 10^b
x87 : a2 = 1.yyyyyyyyw * 10^c

‚‚܂èALSB ‚ÍAª‚̂悤‚ÉAz ‚Æ w ‚ÅA2‚‚ ‚é‚Ì‚ÅALSBs ‚Æ‚¢‚¤‰pŒê‚ɂȂéB



191 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 17:15:04.14 ID:heijdb7v.net]
ŒëF‚±‚ê‚ÍASSE ‚Ìê‡‚Ì LSB ‚ÆAx87 FPU ‚Ìê‡‚Ì FPU ‚Ì2Ží—Þ‚ð
³F‚±‚ê‚ÍASSE ‚Ìê‡‚Ì LSB ‚ÆAx87 FPU ‚Ìê‡‚Ì 2Ží—Þ‚ð

192 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 17:18:55.19 ID:heijdb7v.net]
>>184
>—g‚°‘«Žæ‚肾‚¯‚ÇLSB‚ðuÅ‚à‰¿’l‚ª¬‚³‚¢v‚Á‚Ä’¼–ó‚Í‚¢‚©‚ª‚È‚à‚Ì‚©‚Èw
>•’Ê‚ÉʼnºˆÊƒrƒbƒg‚¶‚á‚È‚¢‚ÌH

®”‚ÌꇂÍAuʼnºˆÊƒrƒbƒgv‚Æ‚¢‚¤‚ÆA–{“–‚ÉBIT‚̈ʒu‚ªˆê”Ô‰E‚É‚ ‚邿‚¤‚ȃCƒ[ƒW‚à‚ ‚éB

ˆê•ûA•‚“®¬”“_”‚ÌꇂÍA‰E‚É‚ ‚邯‚©‚æ‚èA‰¼”•”‚É‚¨‚¢‚ÄAˆê”Ô‰¿’l‚̬‚³‚¢ƒrƒbƒgA‚Æ‚¢‚¤ƒjƒ…ƒAƒ“ƒX‚ðŽg‚¦‚½‚©‚Á‚½B

IEEE‚Å‚ÍA‚»‚ê‚ÍŠm‚©‚Ɉê”Ô‰E‚É‚ ‚éƒrƒbƒg‚Å‚ ‚Á‚ÄAƒ}ƒVƒ“ŒêƒŒƒxƒ‹‚Ì•\Œ»‚Å‚ÍABIT0‚ł͂ ‚é‚Ì‚¾‚ªB

ƒjƒ…ƒAƒ“ƒX“I‚ÉB

193 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 17:29:56.92 ID:aC3C7hdp.net]
>>187
‚»‚ê‚͉´‚àŽv‚Á‚½‚¯‚ÇA‚»‚ê‚È‚çsignificand‚Ì•û‚à•¡”‚¶‚á‚È‚¢‚Æ‚¨‚©‚µ‚¢‚悤‚È...

194 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 20:35:40.44 ID:UR1d6CKz.net]
“¯—l‚ÌÇó‚ðÄŒ»o—ˆ‚邿‚¤‚ɂȂÁ‚½‚Ì‚Åã‚°‚éB
Š®‘SÄŒ»‚Ío—ˆ‚ĂȂ¢‚ªAŽg‚¢•¨‚ɂ͂Ȃé‚Í‚¸B‹»–¡‚ª‚ ‚él‚Í‚æ‚낵‚­B

ÇóF
’P“ƂŋN“®‚µ‚½ê‡‚ÆAIDE‚©‚ç‹N“®‚µ‚½ê‡‚ÅAŒ‹‰Ê‚ªˆÙ‚È‚éB

ŠÂ‹«F
VS++2008ExpressEdition

ÄŒ»•û–@F
1. V‹KƒvƒƒWƒFƒNƒg‚ðì¬B(CLRƒRƒ“ƒ\[ƒ‹ƒAƒvƒŠƒP[ƒVƒ‡ƒ“BƒIƒvƒVƒ‡ƒ““™‚Í‘S‚ăfƒtƒH‚̂܂Ü)
2. main‚ðˆÈ‰ºƒ\[ƒX‚Æ·‚µ‘Ö‚¦‚éB
3. Releaseƒrƒ‹ƒh‚ÅŽÀs‚·‚éB(Debugƒrƒ‹ƒh‚Å‚ÍÄŒ»‚µ‚È‚©‚Á‚½‚̂ŒˆÓj

Œ‹‰ÊF
0.000000, 0x1ff68ddfb62221dd (IDE‚©‚ç‚Ì‹N“®(F5))
0.000000, 0x1ff68ddfb62221de (ƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚©‚ç‚Ì‹N“®)
ÅŒã‚Ì2bit‚ªˆÙ‚È‚éB(Œë·‚Í1bitj

”õlF
‰´‚ª‘˜‹ö‚µ‚Ä‚¢‚é‚̂Ƃ͂â‚âˆÙ‚È‚éB(‰´‚Ìê‡ADebugƒrƒ‹ƒh‚Å‚à‚±‚ꂪ”­¶‚·‚é)
‚±‚ÌÄŒ»ó‹µ‚¾‚ÆA’P‚É
uDebug‚ÆRelease‚ŃoƒCƒiƒŠ‚ªˆÙ‚È‚èA
IDE‚©‚ç‹N“®‚µ‚½ê‡‚Íí‚ÉDebugƒoƒCƒiƒŠ‚ð’Í‚ñ‚Å‚¢‚邾‚¯‚Å‚ÍHv
‚Æ‚àŽæ‚ê‚邪A‚±‚¿‚ç‚ÅŠm”F‚µ‚½ŒÀ‚è‚Í‚¿‚á‚ñ‚ÆReleaseƒoƒCƒiƒŠ‚ð’Í‚ñ‚Å‚¢‚éB
——R‚ÍA
1. Debug/Release‚Ì—¼•û‚̃oƒCƒiƒŠ‚ª‚È‚¢ó‘Ô‚ÅŽÀs‚µ‚½ê‡A
@Ž©“®“I‚É쬂³‚ê‚é‚Ì‚ÍReleaseƒoƒCƒiƒŠBi“–‘R‚¾‚ªj
@Œ‹‰Ê‚Í****dd‚ƂȂéB(ƒuƒŒ[ƒNƒ|ƒCƒ“ƒg“™‚ÅŽ~‚߂Ċm”F‚·‚éj
2. ‚»‚ÌReleaseƒoƒCƒiƒŠ‚ðƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚©‚ç‹N“®‚·‚邯A****de‚ÌŒ‹‰Ê‚ª“¾‚ç‚ê‚éB

195 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2018/09/15(“y) 20:37:06.43 ID:UR1d6CKz.net]
ƒ\[ƒXF
#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;
}

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]






[ ‘±‚«‚ð“Ç‚Þ ] / [ Œ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