Phần cứng - Chapter 10: The stack
          
        
            
            
              
            
 
            
                
                    A Record
A collection of contiguous memory locations treated as one entity
The struct construct in C/C++ describes a record
Activation Record
Is allocated for each function invocation in memory
The area of memory where activation records are allocated is called the stack memory 
In LC-2, R6 is the stack pointer: it points to the top of the stack (TOS)
Each element on the stack is an activation record
                
              
                                            
                                
            
 
            
                 10 trang
10 trang | 
Chia sẻ: huyhoang44 | Lượt xem: 1044 | Lượt tải: 0 
              
            Bạn đang xem nội dung tài liệu Phần cứng - Chapter 10: The stack, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chapter 10 The StackStack data structureActivation records and function invocation (Chapter 14)Stack Data StructureLIFO (last in - first out)Operations:Push (enter item at top of stack)Pop (remove item from top of stack)Error conditions:Underflow (try to pop from empty stack)Overflow (try to push onto full stack)A register (eg. R6) holds address of top of stack (TOS)2PUSH & POPPOP, including underflow checkIf (( TOS - EMPTY) == 0)R5 = 1 /* R5 gets error code */Else {R0 = C[TOS]; /*R0 gets value at TOS*/TOS = TOS - 1;R5 = 0;PUSH, including overflow checkIf (( TOS - MAX) == 0)R5 = 1 /* R5 gets error code */Else {TOS = TOS + 1;C[TOS] = r0; /*TOS gets value in R0*/R5 = 0;EMPTYTOSMAX3PUSH & POP in LC-2 - 1POP 	ST R2,Sv2 	;save, needed by POP	ST R1,Sv1 	;save, needed by POP	LD R1,BASE 	;BASE contains -x4000	ADD R1,R1,#1 	;R1 has -x3FFF	ADD R2,R6,R1 	;Compare SP to 3FFF	BRz fail 	;Branch if stk empty	LDR R0,R6,#0 	;The actual ‘pop’	ADD R6,R6,#-1 	;Adjust stack pointer	BRnzp successBASE 	.FILL xC000 	;Base has -x4000MAX 	.FILL xBFFC 	;Max has -x40044PUSH & POP in LC-2 - 2PUSH 	ST R2,Sv2 	;needed by PUSH	ST R1,Sv1 	;needed by PUSH	LD R1,MAX 	;MAX has -4004	ADD R2,R6,R1 	;Compare SP to x4004	BRz fail 	;Branch is stk full	ADD R6,R6,#1 	;Adjust SP	STR R0,R6,#0 	;The actual ‘push’Sv1 	.FILL x0000Sv2 	.FILL x00005PUSH & POP in LC-2 - 3success LD R1,Sv1 	;Restore reg values	LD R2,Sv2 	;	AND R5,R5,#0	;R5 <-- success	RET	;fail 	LD R1,Sv1	;Restore reg values	LD R2,Sv2	AND R5,R5,#0	ADD R5,R5,#1	;R5 <-- fail	RET6Activation RecordsA RecordA collection of contiguous memory locations treated as one entityThe struct construct in C/C++ describes a recordActivation RecordIs allocated for each function invocation in memoryThe area of memory where activation records are allocated is called the stack memory In LC-2, R6 is the stack pointer: it points to the top of the stack (TOS)Each element on the stack is an activation record7Activation Recordreturn addressreturn valuedynamic linkabxyzFormalparametersLocalvariablesfunction This (int a, int b){	int x, y, z;		function body	..	return z;}8Examplefunction This (int a, int b){	int x, y, z;		y = That(a);	..	return z;}function That (int a){	int x;		body	..	return x;}9Example - 2return addressreturn valuedynamic linkabxyzactivation recordof ThisR6return addressreturn valuedynamic linkabxyzreturn addressactivation recordof Thisx4050axreturn valueactivation recordof ThatR6x4050When This is executingAfter This calls That When That terminates10
            Các file đính kèm theo tài liệu này:
 najjar_chap10_5714.ppt najjar_chap10_5714.ppt