29-Mar-2024 02:10 GMT.
UNDER CONSTRUCTION
[Web] Analysis: x86 Vs PPCANN.lu
Posted on 09-Jul-2003 21:21 GMT by Hagge38 comments
View flat
View list
It's up, created by Nicholas Blachford, read it all on osnews.
List of all comments to this article
Sorted by date, most recent at bottom
Comment 1Matt Parsons09-Jul-2003 19:50 GMT
Comment 2Don CoxRegistered user09-Jul-2003 20:11 GMT
Comment 3takemehomegrandmaRegistered user09-Jul-2003 20:24 GMT
Comment 4corpse09-Jul-2003 20:41 GMT
Comment 5corpse09-Jul-2003 21:03 GMT
Comment 6Elektro09-Jul-2003 21:26 GMT
Comment 7Christophe DecaniniRegistered user09-Jul-2003 21:33 GMT
Comment 8Lando09-Jul-2003 22:30 GMT
Comment 9Johan Rönnblom09-Jul-2003 22:54 GMT
Comment 10Anonymous09-Jul-2003 23:00 GMT
Comment 11corpse09-Jul-2003 23:47 GMT
Comment 12corpse09-Jul-2003 23:50 GMT
Comment 13corpse09-Jul-2003 23:58 GMT
Comment 14Chain|Q10-Jul-2003 05:18 GMT
Comment 15Chain|Q10-Jul-2003 05:22 GMT
Comment 16gz10-Jul-2003 05:55 GMT
Comment 17Emeric SH10-Jul-2003 06:29 GMT
Comment 18Fabio Alemagna10-Jul-2003 06:55 GMT
Comment 19Bill Hoggett10-Jul-2003 07:01 GMT
Comment 20Matt Parsons10-Jul-2003 07:18 GMT
Comment 21John Block10-Jul-2003 08:13 GMT
Comment 22elektroRegistered user10-Jul-2003 10:24 GMT
Comment 23corpse10-Jul-2003 11:15 GMT
Comment 24Rob10-Jul-2003 15:46 GMT
Analysis: x86 Vs PPC : Comment 25 of 38ANN.lu
Posted by Megol on 10-Jul-2003 19:23 GMT
In reply to Comment 14 (Chain|Q):
"Anyway, the most painful part of the x86 architecture is the FPU, since the x86 has no linear address space, but it's some weird kind of a stack. So on x86, you just can't fmove.l (a0),fp3, and then fmul fp2,fp3, because you only can move values to the top of the stack (all values moves down then) and you can only make operations on the value currently at the top of the stack. Of course there is an instruction, which swaps two values in the stack, but this makes overhead simply not exists on architectures using linear FPU register set."
The overhead is not that great in practice as (using Athlon as an example) the swap instruction is treated as a FNOP(==Floating point No OPeration) and the x86 can use memory operands to replace register accesses.
So your code above would translate to (if 'fp2's value is first on the stack):
fmul dword ptr [eax]

"Other difference, compared to the 68k for example, that you cannot move values directly between the CPU and the FPU, you have to store the value to the memory first, and then move to the FPU."
I thought most "RISC" architectures required this too?

"So this makes FPU coding on x86 difficult, and also makes the FPU unnecessarily complex, and ineffective."
Well the x86 FPUs still are among the most effective for microprocessors. But it really is a PITA to code floating point routines in asm :-/

"And yes, i'm playing the smart-ass, hehe... ;] But hope this makes the picture more clear for ppl. has no or few programming experiences with 32bit x86. (I've some 10 years or so, but i'm not proud for it, hehe.:)"
Be proud ;-)
Jump...
#34 Chain|Q
TopPrevious commentNext commentbottom
List of all comments to this article (continued)
Comment 26anonymous10-Jul-2003 20:00 GMT
Comment 27CodeSmith10-Jul-2003 21:27 GMT
Comment 28CodeSmith10-Jul-2003 21:32 GMT
Comment 29Bill Hoggett10-Jul-2003 21:59 GMT
Comment 30DaveP11-Jul-2003 06:57 GMT
Comment 31Rob11-Jul-2003 08:32 GMT
Comment 32Matt Parsons11-Jul-2003 09:35 GMT
Comment 33Matt Parsons11-Jul-2003 11:08 GMT
Comment 34Chain|Q11-Jul-2003 15:31 GMT
Comment 35Joe "Floid" Kanowitz11-Jul-2003 18:05 GMT
Comment 36smp26612-Jul-2003 01:00 GMT
Comment 37Anonymous14-Jul-2003 18:17 GMT
Comment 38Anonymous14-Jul-2003 18:18 GMT
Back to Top