Author: Matt Taylor
Date: 18:09:30 02/10/03
Go up one level in this thread
On February 10, 2003 at 14:44:40, Tom Kerrigan wrote: >On February 10, 2003 at 01:32:45, Matt Taylor wrote: > >>On February 10, 2003 at 00:44:13, Tom Kerrigan wrote: >> >>>On February 09, 2003 at 23:39:04, Matt Taylor wrote: >>> >>>>>Compilers that inline code and do "fastcalls" negate any benefit that register >>>>>windowing gives you. >>>>On an architecture like Sparc or IA-64 that gives you enough registers to do so. >>>>Let's start counting...I have 8 registers on IA-32...1 used as frame pointer...1 >>>>as stack pointer...3 get preserved by convention...hmm. I guess that leaves -3- >>>>registers for "fastcall" convention. This is why IA-32 usually doesn't even >>>>bother with fastcall. >>> >>>Sure, programmer visible registers. Doesn't the P6 have 40 rename registers? Who >>>knows how many the P4 has. >> >>I don't see your point. It's not programmer-visible, and it doesn't assist a >>fastcall convention. > >Why wouldn't the rename registers alleviate the problem with fastcalls just as >much as anything else? Because I don't have access to rename registers. So far as I know, they serve one purpose in IA-32: mov [mem], ecx mov ecx, blah These are not dependant because the processor renames ecx in the second instruction to alias on a different internal register. The old value of ecx sticks around so old instructions can issue out-of-order and use the correct temporal value of ecx without delaying future instructions. This in no way, shape, or form alleviates the problem of fastcall. Dr. Hyatt said exactly what I was trying to say. On a side note -- I recall reading something in the P3 manual about using register renaming to make al, ah, ax, and eax appear differently. This was labelled as the cause for the infamous partial-register stall the P3 exhibits. >Why are you arguing about IA-32 anyway? I don't even like IA-32. Fastcalls work >well with MIPS and Alpha, that's been well documented. And before you discount >IA-32, why not actually get some data on it before trying to convince yourself >one way or the other? I'm arguing about IA-32 because that's sort've what the thread was about. The original question was something to the tune of, "How do IA-64 and AA-64 compare to IA-32?" No MIPS. No Sparc. No HP-RISC. No Alpha. Just IA-32, IA-64, and AA-64. The only times I have deliberately brought Sparc into the picture was for comparison with IA-64. Dr. Hyatt is correct. I program x86 assembler on a daily basis. I do assembly optimization for x86 frequently. I know the x86 ISA inside and out -- to the extent that I can assemble a large number of opcodes in my head. I have written many fastcall functions. I know the problems that plague them. I have outlined one particular fault which you have repeatedly ignored. You still have no valid answer; both Dr. Hyatt and I have corrected you -- the rename registers are not available to the application, and they have no tangible effect on a register-passing scheme for x86. Now your answer is that I am ignorant? -Matt
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.