Path: csiph.com!xmission!usenet.csail.mit.edu!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Hans-Peter Diettrich Newsgroups: comp.compilers Subject: Re: 8086 register allocation Date: Tue, 11 May 2021 09:35:17 +0200 Organization: Compilers Central Lines: 22 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <21-05-011@comp.compilers> References: <21-05-005@comp.compilers> <21-05-007@comp.compilers> <21-05-008@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="8380"; mail-complaints-to="abuse@iecc.com" Keywords: code, history Posted-Date: 12 May 2021 23:56:46 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com In-Reply-To: <21-05-008@comp.compilers> Content-Language: de-DE Xref: csiph.com comp.compilers:2663 On 5/11/21 3:35 AM, Hans-Peter Diettrich wrote: > A stack machine is convenient for calculations. Before the stack > overflows the compiler can save intermediate results, as with any other > architecture of limited register count. > > DoDi > [Normal stack machines have the top few entries in registers and do the > spilling to memory in hardware.  The x87 stack has 8 registers, which is > a lot for a stack machine, but the spilling was broken.   You can address > into the stack but you can't really use it as a register machine. -John] FORTH coders know how inconvenient for humans is accessing "local variables" in such a stack. But a compiler can track the content of the stack. I had some problems in understanding "spilling". After re-reading the 80287 instruction set I found that only ST(0) is usable for memory load/store operations, making it hard to code load/store the other end of the register stack. Thanks, John, for the kick... ;-) DoDi