ホーム » スタッフ » 斉藤徹 » 動的記憶域・スタック

2009年1月
« 12月   2月 »
 123
45678910
11121314151617
18192021222324
25262728293031

最近の投稿(電子情報)

アーカイブ

カテゴリー

動的記憶域・スタック

≪ 機械語におけるPUSH,POPの説明用 ≫
#define STACKSIZE たっぷり
int stack[ STACKSIZE ] ;
int sp = stack + STACKSIZE ;
int fp ;
push( int x ) {
sp-- ;
stack[ sp ] = x ;
}
int pop( ) {
int ans = stack[ sp ] ;
sp++ ;
return ans ;
}
≪ 関数呼出しで何が行われるか ≫
foo( int x , int y ) {
int s , int t ;
:
}
void main() {
int a , b ;
foo( a , b ) ;
:
}
≪ 機械語もどき ≫
foo:  push( fp ) ;
ret ;
main: push( b ) ;
push( a ) ;
call foo ;
sp += 2 ;