🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #1936

Re: Visual Studio 2008 (C++ oraz DLL w asmie) Interpolacja

#1936
From: MrokU
Date: Sat, 30 May 2009 18:50
67 lines
3218 bytes
No, przepełniał mi się chyba stos FPU ...
Funkcja napisana od nowa, działająca, wygląda tak:

wspU_2 PROC n:DWORD, k:DWORD, beta:QWORD, tab:PTR, wynik:PTR
LOCAL Uk1:QWORD, Uk2:QWORD, tabT:PTR
	pushad
	finit

	mov eax, k
	cmp eax, n				; if (k > n)

	ja Zwroc0				; return 0

	mov ebx, k
	inc ebx					; ebx = k+1
	mov ecx, tab
	add ecx, 32
	mov tabT, ecx			; tabT = tab + 32 (przejscie do kolejnego elementu
tablicy)

	INVOKE wspU_2, n, ebx, beta, tabT, wynik

	mov ebx, wynik
	fld QWORD PTR [ebx]
	fstp Uk1				; zapisanie wyniku do zmiennej lokalnej

	mov ebx, k
	add ebx, 2				; ebx = k+2
	mov ecx, tab
	add ecx, 64
	mov tabT, ecx			; tabT = tab + 64 (przejscie o 2 elementy tablicy)

	INVOKE wspU_2, n, ebx, beta, tabT, wynik

	mov ebx, wynik
	fld QWORD PTR [ebx]
	fstp Uk2				; zapisanie wyniku do zmiennej lokalnej

	fld beta
	fcos					; cosinus (beta)
	fadd st(0), st(0)		; 2 * cos (beta)

	fld Uk1					; zaladowanie wartosci U(k+1)
	fmulp st(1), st(0)		; 2 * cos (beta) * U(k+1) -> st0

	fld Uk2
	fsubp st(1), st(0)		; 2 * cos (beta) * U(k+1) - U(k+2) -> st0

	mov esi, tab
	fld QWORD PTR [esi+8]
	faddp st(1), st(0)		; f(xk) + 2 * cos (beta) * U(k+1) - U(k+2) -> st0

	mov esi, wynik
	fstp QWORD PTR [esi]

	jmp Koniec

Zwroc0:
	mov esi, wynik
	fldz
	fstp QWORD PTR [esi]

Koniec:
	popad
	ret;

wspU_2 ENDP
Technical Details
Message-ID: <b5d08268-4d2e-4e43-a816-196a0781602a@z9g2000yqi.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!news2.glorb.com!postnews.google.com!z9g2000yqi.googlegroups.com!not-for-mail
References: <29a4a4e4-9913-4afa-ba78-63b3168b1c91@r34g2000vbi.googlegroups.com> <1800926.ER7XFjMh0G@meehow.homeip.net> <6a3c09a9-6a40-491a-8d0b-aebe884ddeb9@k38g2000yqh.googlegroups.com> <gvh3mf$a3r$1@inews.gazeta.pl> <0350c547-38dd-4ffd-9348-994f087be99e@21g2000vbk.googlegroups.com> <gvhacl$b4v$1@inews.gazeta.pl> <4cd17bbe-78cb-4b0c-8dcf-d71287d4f307@x3g2000yqa.googlegroups.com> <f5c0cab0-caff-4858-bfad-4106556e0597@r13g2000vbr.googlegroups.com> <gvrei4$l9v$1@inews.gazeta.pl> <168f208a-9218-484f-82cd-2c3dc452d48f@v4g2000vba.googlegroups.com> <gvriog$c4n$1@inews.gazeta.pl> <fff60de0-8de1-4f54-bae0-960e47e1bfd3@o14g2000vbo.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!news2.glorb.com!postnews.google.com!z9g2000yqi.googlegroups.com!not-for-mail
From: MrokU <arkosmc@gmail.com>
Newsgroups: pl.comp.lang.asm
Subject: Re: Visual Studio 2008 (C++ oraz DLL w asmie) Interpolacja
Date: Sat, 30 May 2009 11:50:03 -0700 (PDT)
Organization: http://groups.google.com
Lines: 67
Message-ID: <b5d08268-4d2e-4e43-a816-196a0781602a@z9g2000yqi.googlegroups.com>
References: <29a4a4e4-9913-4afa-ba78-63b3168b1c91@r34g2000vbi.googlegroups.com>  <1800926.ER7XFjMh0G@meehow.homeip.net> <6a3c09a9-6a40-491a-8d0b-aebe884ddeb9@k38g2000yqh.googlegroups.com>  <gvh3mf$a3r$1@inews.gazeta.pl> <0350c547-38dd-4ffd-9348-994f087be99e@21g2000vbk.googlegroups.com>  <gvhacl$b4v$1@inews.gazeta.pl> <4cd17bbe-78cb-4b0c-8dcf-d71287d4f307@x3g2000yqa.googlegroups.com>  <f5c0cab0-caff-4858-bfad-4106556e0597@r13g2000vbr.googlegroups.com>  <gvrei4$l9v$1@inews.gazeta.pl> <168f208a-9218-484f-82cd-2c3dc452d48f@v4g2000vba.googlegroups.com>  <gvriog$c4n$1@inews.gazeta.pl> <fff60de0-8de1-4f54-bae0-960e47e1bfd3@o14g2000vbo.googlegroups.com>
NNTP-Posting-Host: 83.4.246.72
Mime-Version: 1.0
X-Trace: posting.google.com 1243709404 23651 127.0.0.1 (30 May 2009 18:50:04 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Sat, 30 May 2009 18:50:04 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: z9g2000yqi.googlegroups.com; posting-host=83.4.246.72;  posting-account=M89B8goAAADtNGu6YLcVvvVDLG2z3LY8
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)  AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.182.3 Safari/531.0,gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit