From: redelm@ev1.net.invalid   
      
   Bartc wrote in part:   
   > Internal code Register name   
   > 0 AX   
   > 1 CX   
   > 2 DX   
   > 3 BX   
   > 4 SP   
   > 5 BP   
   > 6 SI   
   > 7 DI   
   >   
   > Why aren't they named AX,BX,CX,DX instead of AX,CX,DX,BX?   
      
   This may be getting uncomfortably close to the "symmetric register"   
   flamewar. x86 has been successful with asymmetric specific-purpose   
   registers. Which are perhaps best explained by the full register names:   
      
   AX = accumulator (if you do not see the significance, study early CPU design)   
   BX = base (have a look at moribund, disused instructions like XLAT)   
   CX = count ( look at REP:MOVSW , perhaps the biggest x86 early advantage)   
   DX = data / double -- high word   
      
   SP = stack pointer   
   BP = base pointer to a caller's stack frame for parms   
   SI = source index (for MOVS!)   
   DI = destination index   
      
   > Why is the stack pointer in the middle? (Usually it's at or near the top.)   
      
   Other archs I've seen have SP at high R# , it may be inthe middle   
   here because BP,SI,DI were added between the 8085 and 8086.   
      
   > So the internal hard-coding is irrelevant.   
      
   Currently, yes. Not so when transistors were much more   
   limited in 1976-8 when x86 was designed. I do not believe   
   it is possible to understand design decisions without a full   
   understanding of the context in which they were made.   
      
   -- Robert   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|