>  2007/09/15 (土) 02:34:18        [qwerty]
> > 久しぶりにCでプログラム書いてみたのだけどさっぱり動いてくれません
> > 駄目人間化してる(;´Д`)タスケテー
> インラインアセンブラで全て解決ヽ(´ー`)ノ

コールバック関数を作りたいのにうまくいかないだけなんだけどね
探してたら昔書いたこんなの出てきたよ(;´Д`)それにしてもx86はレジスタ少なすぎ
int MathSqrt(int i){
	int j,k;

	_asm{
		mov			eax,[i]
		mov			ecx,eax
		cmp			eax,0
		jz			skip_1				// 0は0
		cmp			eax,1
		jz			skip_1				// 1は1(次のループの判断が2以上な為にこっちが速い)

		mov			ebx,1				// 近似値を求めるための挟み込み
loop_1:
		shl			ebx,1
		shr			ecx,1
		cmp			ebx,ecx
		jb			loop_1				// 大きい間はループする

		add			ebx,ecx
		shr			ebx,1
loop_2:
		mov			ecx,ebx
		push		eax
		cdq								// これを忘れないように
		div			ebx
		add			ebx,eax
		shr			ebx,1
		pop			eax
		cmp			ebx,ecx
		jb			loop_2
		mov			eax,ecx
skip_1:
		mov			[k],eax
	}
	return k;

参考:2007/09/15(土)02時22分00秒