106 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
.ps 10
 | 
						|
.vs 12
 | 
						|
.PS
 | 
						|
boxwid = 1.3
 | 
						|
boxht = 0.25
 | 
						|
down;
 | 
						|
box "floating point" "register dump area" ht 0.6
 | 
						|
box "tmp float store"
 | 
						|
box "register dump area" ht 0.6
 | 
						|
{ arrow <- right with .w at 3/4 <last box.e, last box.se>; \
 | 
						|
box invis wid 0.3 "%fp" }
 | 
						|
move .1
 | 
						|
box dotted "gap"
 | 
						|
{ arrow <- right with .w at last box.e; \
 | 
						|
box invis wid 0.3 "%LB" }
 | 
						|
move .1
 | 
						|
box "locals"
 | 
						|
box "actual parameter n-1";
 | 
						|
box "." "." "." ht 0.6;
 | 
						|
box "actual parameter 0";
 | 
						|
{ arrow <- right with .w at last box.e; \
 | 
						|
box invis wid 0.3 "%SP" }
 | 
						|
move 0.1
 | 
						|
box "large gap" "(>64kb)" ht 1.0
 | 
						|
box "register dump area" ht 0.6
 | 
						|
{ arrow <- right with .w at 3/4 <last box.e, last box.se>; \
 | 
						|
box invis wid 0.3 "%sp" }
 | 
						|
move 0.2
 | 
						|
box invis "\\s+2just before call\\s0"
 | 
						|
move 1
 | 
						|
box dotted "gap"
 | 
						|
box invis "0 or 4 bytes" "for stack alignment" with .w at last box.e
 | 
						|
box invis height .7 "when gap is 0 bytes," "%fp == %LB" with .n at 2nd last box.s
 | 
						|
.PF
 | 
						|
.PS
 | 
						|
down;
 | 
						|
move to 2.4,0
 | 
						|
box "floating point" "register dump area" ht 0.6
 | 
						|
box "tmp float store"
 | 
						|
box "register dump area" ht 0.6
 | 
						|
{ arrow <- right with .w at 3/4 <last box.e, last box.se>; \
 | 
						|
box invis wid 0.3 "%fp" }
 | 
						|
move .1
 | 
						|
box dotted "gap"
 | 
						|
{ arrow <- right with .w at last box.e; \
 | 
						|
box invis wid 0.3 "%LB" }
 | 
						|
move .1
 | 
						|
box "locals"
 | 
						|
box "actual parameter n-1";
 | 
						|
box "." "." "." ht 0.6;
 | 
						|
box "actual parameter 0";
 | 
						|
{ arrow <- right with .w at last box.e; \
 | 
						|
box invis wid 0.3 "%SP" }
 | 
						|
move .1
 | 
						|
box dotted "gap"
 | 
						|
move .4
 | 
						|
box "floating point" "register dump area" ht 0.6
 | 
						|
box "tmp float store"
 | 
						|
box "register dump area" ht 0.6
 | 
						|
{ arrow <- right with .w at 3/4 <last box.e, last box.se>; \
 | 
						|
box invis wid 0.3 "%sp" }
 | 
						|
move 0.2
 | 
						|
box invis "\\s+2'during' call\\s0"
 | 
						|
.PF
 | 
						|
.PS
 | 
						|
down;
 | 
						|
move to 4.8,0
 | 
						|
box "floating point" "register dump area" ht 0.6
 | 
						|
box "tmp float store"
 | 
						|
box "register dump area" ht 0.6
 | 
						|
move .1
 | 
						|
box dotted "gap"
 | 
						|
move .1
 | 
						|
box "locals"
 | 
						|
box "actual parameter n-1";
 | 
						|
box "." "." "." ht 0.6;
 | 
						|
box "actual parameter 0";
 | 
						|
move .1
 | 
						|
box dotted "gap"
 | 
						|
move .4
 | 
						|
box "floating point" "register dump area" ht 0.6
 | 
						|
box "tmp float store"
 | 
						|
box "register dump area" ht 0.6
 | 
						|
{ arrow <- right with .w at 3/4 <last box.e, last box.se>; \
 | 
						|
box invis wid 0.3 "%fp" }
 | 
						|
move .1
 | 
						|
box dotted "gap"
 | 
						|
{ arrow <- right with .w at last box.e; \
 | 
						|
box invis wid 0.3 "%LB" }
 | 
						|
move .1
 | 
						|
box "locals"
 | 
						|
box "actual parameter n-1";
 | 
						|
box "." "." "." ht 0.6;
 | 
						|
box "actual parameter 0";
 | 
						|
{ arrow <- right with .w at last box.e; \
 | 
						|
box invis wid 0.3 "%SP" }
 | 
						|
move 0.1
 | 
						|
box "large gap" "(>64kb)" ht 1.0
 | 
						|
box "register dump area" ht 0.6
 | 
						|
{ arrow <- right with .w at 3/4 <last box.e, last box.se>; \
 | 
						|
box invis wid 0.3 "%sp" }
 | 
						|
move 0.2
 | 
						|
box invis "\\s+2after call\\s0"
 | 
						|
.PF
 | 
						|
.ps 12
 | 
						|
.vs 14
 |