Related articles |
---|
Reconstructing the Types of Stack-Machine Codes cookcu@ruby.kaist.ac.kr (Oukseh Lee) (1998-10-17) |
Re: Reconstructing the Types of Stack-Machine Codes anton@mips.complang.tuwien.ac.at (1998-10-18) |
Re: Reconstructing the Types of Stack-Machine Codes M-Jourdan@calva.net (1998-10-18) |
Re: Reconstructing the Types of Stack-Machine Codes andrewf@slhosiery.com.au (Andrew Fry) (1998-10-18) |
Re: Reconstructing the Types of Stack-Machine Codes cwm2n@cobra.cs.virginia.edu (Christopher W. Milner) (1998-10-21) |
Re: Reconstructing the Types of Stack-Machine Codes kers@hplb.hpl.hp.com (1998-10-24) |
Re: Reconstructing the Types of Stack-Machine Codes Jan.Vitek@cui.unige.ch (1998-10-30) |
From: | Oukseh Lee <cookcu@ruby.kaist.ac.kr> |
Newsgroups: | comp.compilers |
Date: | 17 Oct 1998 01:55:09 -0400 |
Organization: | KREONet news service |
Keywords: | code, question |
Hello,
I'm working on developing an EM-to-PowerPC compiler where EM is a
stack-machine intermediate language of Amsterdam compiler kit. I
found that if we know the types of runtime EM stack, it is possible to
generate more efficient target code.
So I design a type analysis of runtime stack by abstract
interpretation. However I'm afraid someone made similar type analysis
of runtime stack before, because I think it's very simple technique.
Whoever knows about TYPE ANALYSIS of STACK-MACHINE CODES?
Please make me know. Thanks in advance.
P.S.
An example to explain why type information help us to generate more
efficient target code:
For example, for input code (a),
assuming possible control-flow is A->C and B->C,
A: push 1 A: rsp <- rsp+1 A: r1 <- 1
push 2 M[rsp] <- 1 r2 <- 2
jump B rsp <- rsp+1 jump B
B: push 3 M[rsp] <- 2 B: r1 <- 3
push 4 jump B r2 <- 4
C: add B: rsp <- rsp+1 C: ... <- r1+r2
M[rsp] <- 3
rsp <- rsp+1
M[rsp] <- 4
C: ... <- M[rsp]+M[rsp-1]
rsp <- rsp -2
*rsp: register for stack *r1,r2: integer registers
pointer
(a) input (b) stack-emulation (c) efficient
target code target code
If we know the top of stack before C is two integer, instead of
stack-emulation target code such as (b), we can generate more
efficient target code such as (c).
--
Oukseh Lee, KAIST.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.