Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #26422
| From | Bernd Paysan <bernd.paysan@gmx.de> |
|---|---|
| Newsgroups | comp.lang.forth |
| Subject | Re: A problem with gforth-fast |
| Date | 2013-10-12 15:50 +0200 |
| Organization | 1&1 Internet AG |
| Message-ID | <l3bk2s$st0$1@online.de> (permalink) |
| References | <63d44691-4272-4e9f-9e61-9637dcc1ce91@googlegroups.com> <l393po$kea$1@online.de> <xeednaA0e5SbvcXPnZ2dnUVZ_sSdnZ2d@supernews.com> <l39a61$so1$1@online.de> <MImdnXkWs-Frn8TPnZ2dnUVZ8iadnZ2d@supernews.com> |
Andrew Haley wrote: > Bernd Paysan <bernd.paysan@gmx.de> wrote: >> Andrew Haley wrote: >> >>> Bernd Paysan <bernd.paysan@gmx.de> wrote: >>> Fascinating. Is it simply that cos() leaves the stack pointer >>> depressed? And no-one noticed! I guess as long as you don't call it >>> too many times in a loop, no-one ever would. :-) >> >> It clobbers ECX. As long as you don't keep anything of value in ECX, it >> works fine. > > So what? It's allowed to clobber ECX: > > %ecx and %edx > > Scratch registers have no specified role in the standard calling > sequence. Functions do not have to preserve their values for the > caller. Registers EAX, ECX, and EDX are caller-saved, and the rest are callee-saved. Which means when the C compiler allocates %ecx as register (either implicit or explicit), it must save it on function calls. GCC doesn't (it also doesn't tell that you can't eplicitely allocate %ecx across function calls, because it might be clobbered; it did that in gcc-3.x), but the problem only becomes one since the trigonometric functions don't just call the x87 instuctions. All other calls return some integer values which then become the new TOS. However, it seems to be that more recent GCC 4.x again allow us to use %ebp as register (despite -fomit-frame-pointer, previous didn't), so I'll use %ebp when possible. -- Bernd Paysan "If you want it done right, you have to do it yourself" http://bernd-paysan.de/
Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
A problem with gforth-fast humptydumpty <ouatubi@gmail.com> - 2013-10-11 02:51 -0700
Re: A problem with gforth-fast Bernd Paysan <bernd.paysan@gmx.de> - 2013-10-11 17:00 +0200
Re: A problem with gforth-fast humptydumpty <ouatubi@gmail.com> - 2013-10-11 08:54 -0700
Re: A problem with gforth-fast Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-10-11 10:57 -0500
Re: A problem with gforth-fast Bernd Paysan <bernd.paysan@gmx.de> - 2013-10-11 18:49 +0200
Re: A problem with gforth-fast Bernd Paysan <bernd.paysan@gmx.de> - 2013-10-11 21:08 +0200
Re: A problem with gforth-fast humptydumpty <ouatubi@gmail.com> - 2013-10-11 12:54 -0700
Re: A problem with gforth-fast Bernd Paysan <bernd.paysan@gmx.de> - 2013-10-11 23:21 +0200
Re: A problem with gforth-fast humptydumpty <ouatubi@gmail.com> - 2013-10-11 23:58 -0700
Re: A problem with gforth-fast Bernd Paysan <bernd.paysan@gmx.de> - 2013-10-11 21:30 +0200
Re: A problem with gforth-fast Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-10-12 03:06 -0500
Re: A problem with gforth-fast Bernd Paysan <bernd.paysan@gmx.de> - 2013-10-12 15:50 +0200
Re: A problem with gforth-fast anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-10-14 17:17 +0000
Re: A problem with gforth-fast Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-10-14 12:49 -0500
Re: A problem with gforth-fast anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-10-15 09:50 +0000
Re: A problem with gforth-fast Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-10-15 07:48 -0500
Re: A problem with gforth-fast anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-10-15 13:35 +0000
Re: A problem with gforth-fast Bernd Paysan <bernd.paysan@gmx.de> - 2013-10-15 17:09 +0200
Re: A problem with gforth-fast anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-10-16 16:36 +0000
csiph-web