<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA</id>
	<title>インラインアセンブリ - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA&amp;action=history"/>
	<updated>2026-06-04T05:27:04Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA&amp;diff=3685&amp;oldid=prev</id>
		<title>imported&gt;Fallout New Tokyo: /* 主な欠点 */</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA&amp;diff=3685&amp;oldid=prev"/>
		<updated>2014-03-04T05:43:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;主な欠点&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2014年3月4日 (火) 05:43時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;9行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;9行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[ローカル]]環境では動いても[[オンラインジャッジ]]では[[ランタイムエラー]]になるなど、実行環境に依存した[[プログラム]]になることがある&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[ローカル]]環境では動いても[[オンラインジャッジ]]では[[ランタイムエラー]]になるなど、実行環境に依存した[[プログラム]]になることがある&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 慣れないと書きにくい&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 慣れないと書きにくい&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Pentium 4]]や[[PowerPC 970]]のように[[パイプライン]]がアホみたいに深い[[CPU]]だと[[コンパイラ]]の[[最適化]]に任せた方が遥かに速い。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==使用例==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==使用例==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Fallout New Tokyo</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA&amp;diff=3684&amp;oldid=prev</id>
		<title>imported&gt;MikeCAT: 作成</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA&amp;diff=3684&amp;oldid=prev"/>
		<updated>2013-09-05T05:46:39Z</updated>

		<summary type="html">&lt;p&gt;作成&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;インラインアセンブリ&amp;#039;&amp;#039;&amp;#039;とは、[[C言語]]などの[[高級言語]]の[[コード]]中に[[アセンブリ言語]]のコードを書くテクニックである。&lt;br /&gt;
&lt;br /&gt;
==主な利点==&lt;br /&gt;
* 元の高級言語では使えないテクニック([[キャリーフラグ]]や[[cpuid命令]]など)を使える&lt;br /&gt;
* [[高速化]]できることがある&lt;br /&gt;
&lt;br /&gt;
==主な欠点==&lt;br /&gt;
* [[コンパイラ]]によって書き方が違うので、汎用性が低くなる&lt;br /&gt;
* [[ローカル]]環境では動いても[[オンラインジャッジ]]では[[ランタイムエラー]]になるなど、実行環境に依存した[[プログラム]]になることがある&lt;br /&gt;
* 慣れないと書きにくい&lt;br /&gt;
&lt;br /&gt;
==使用例==&lt;br /&gt;
キャリーフラグを活用することにより、([[64ビット]]*64ビット) mod 64ビットの計算を[[オーバーフロー]]せずに行うコードを以下に示す。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * (a*b)%cを計算する&lt;br /&gt;
 * @param a 掛けられる数&lt;br /&gt;
 * @param b 掛ける数&lt;br /&gt;
 * @param c あまりを取る時に割る数&lt;br /&gt;
 * @return (a*b)%cの計算結果&lt;br /&gt;
 */&lt;br /&gt;
unsigned long long repeat_add(&lt;br /&gt;
		unsigned long long a,unsigned long long b,unsigned long long c) {&lt;br /&gt;
	unsigned int a1,a2,b1,b2,c1,c2,r1,r2;&lt;br /&gt;
	if(a&amp;gt;=c)a%=c;&lt;br /&gt;
	a1=a&amp;gt;&amp;gt;32;a2=a;b1=b&amp;gt;&amp;gt;32;b2=b;c1=c&amp;gt;&amp;gt;32;c2=c;&lt;br /&gt;
	__asm__ volatile (&lt;br /&gt;
		&amp;quot;movl %6,%%ecx\n\t&amp;quot;&lt;br /&gt;
		&amp;quot;movl %7,%%edx\n\t&amp;quot;&lt;br /&gt;
		/* result=0; */&lt;br /&gt;
		&amp;quot;movl $0,%0\n\t&amp;quot;&lt;br /&gt;
		&amp;quot;movl $0,%1\n\t&amp;quot;&lt;br /&gt;
		/* while(b&amp;gt;0) { */&lt;br /&gt;
		&amp;quot;ra_while:\n\t&amp;quot;&lt;br /&gt;
		&amp;quot;movl %4,%%eax\n\t&amp;quot;&lt;br /&gt;
		&amp;quot;orl %5,%%eax\n\t&amp;quot;&lt;br /&gt;
		&amp;quot;jz ra_exit\n\t&amp;quot;&lt;br /&gt;
			/* if(b&amp;amp;1) { */&lt;br /&gt;
			&amp;quot;movl %5,%%eax\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;andl $1,%%eax\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;jz ra_noif1\n\t&amp;quot;&lt;br /&gt;
				/* result+=a; */&lt;br /&gt;
				&amp;quot;movl %2,%%eax\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;movl %3,%%ebx\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;addl %%ebx,%1\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;adcl %%eax,%0\n\t&amp;quot;&lt;br /&gt;
				/* if(result&amp;gt;=c) */&lt;br /&gt;
				&amp;quot;jc ra_do_rmc\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;cmpl %%ecx,%0\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;ja ra_do_rmc\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;jb ra_noif1\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;cmpl %%edx,%1\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;jae ra_do_rmc\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;jmp ra_noif1\n\t&amp;quot;&lt;br /&gt;
				/* result-=c; */&lt;br /&gt;
				&amp;quot;ra_do_rmc:\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;sub %%edx,%1\n\t&amp;quot;&lt;br /&gt;
				&amp;quot;sbb %%ecx,%0\n\t&amp;quot;&lt;br /&gt;
			/* } */&lt;br /&gt;
			&amp;quot;ra_noif1:\n\t&amp;quot;&lt;br /&gt;
			/* a&amp;lt;&amp;lt;=1; */&lt;br /&gt;
			&amp;quot;shll $1,%3\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;rcll $1,%2\n\t&amp;quot;&lt;br /&gt;
			/* if(a&amp;gt;=c) */&lt;br /&gt;
			&amp;quot;jc ra_do_amc\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;cmpl %%ecx,%2\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;ja ra_do_amc\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;jb ra_dont_amc\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;cmpl %%edx,%3\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;jae ra_do_amc\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;jmp ra_dont_amc\n\t&amp;quot;&lt;br /&gt;
			/* a-=c; */&lt;br /&gt;
			&amp;quot;ra_do_amc:\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;subl %%edx,%3\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;sbbl %%ecx,%2\n\t&amp;quot;&lt;br /&gt;
			/* b&amp;gt;&amp;gt;=1; */&lt;br /&gt;
			&amp;quot;ra_dont_amc:\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;shrl $1,%4\n\t&amp;quot;&lt;br /&gt;
			&amp;quot;rcrl $1,%5\n\t&amp;quot;&lt;br /&gt;
		/* } */&lt;br /&gt;
		&amp;quot;jmp ra_while\n\t&amp;quot;&lt;br /&gt;
		&amp;quot;ra_exit:\n\t&amp;quot;&lt;br /&gt;
	: &amp;quot;=m&amp;quot;(r1),&amp;quot;=m&amp;quot;(r2)&lt;br /&gt;
	: &amp;quot;m&amp;quot;(a1),&amp;quot;m&amp;quot;(a2),&amp;quot;m&amp;quot;(b1),&amp;quot;m&amp;quot;(b2),&amp;quot;m&amp;quot;(c1),&amp;quot;m&amp;quot;(c2)&lt;br /&gt;
	: &amp;quot;%eax&amp;quot;,&amp;quot;%ebx&amp;quot;,&amp;quot;%ecx&amp;quot;,&amp;quot;%edx&amp;quot;&lt;br /&gt;
	);&lt;br /&gt;
	return (((long long)r1)&amp;lt;&amp;lt;32)|r2;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==関連項目==&lt;br /&gt;
* [[高級言語]]&lt;br /&gt;
* [[アセンブリ言語]]&lt;br /&gt;
* [[フラグ]]&lt;/div&gt;</summary>
		<author><name>imported&gt;MikeCAT</name></author>
	</entry>
</feed>