Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
такую отследить ещё сложнее.
А я имел в виду Си. В PL/M нет рекурсии.
Вот вам код. Регистр <BC> содержит значение регистровой переменной. Я намеренно зарезервировал 3 байта под локальные данные чтоб было яснее.
Размер буфера под локальные переменные компилятор знает сразу же, на первом проходе, не даром C требует объявления всех локальных переменных в начале тела функции. При отсутствии локальных переменных, Manx тем не менее генерит
LXI D,0
call csave
ret

Разберитесь как это работает, и вам всё станет ясно, надеюсь.

Код:
foo() { char locals[3]; }

;Сгенерённый компилятором код

	PUBLIC foo_
foo_:	lxi d,.8
	call csave
;	char	locals[3];
;}
	RET
.8 EQU -3

Библиотечный код:
cret:
	XCHG
	POP	H
	SPHL
	POP	B
	XCHG
	MOV	A,H
	ORA	L
	RET
;
	public csave,cret
csave:POP H
	PUSH	B
	MOV	B,H
	MOV	C,L
	LXI	H,0
	DAD	SP
	XCHG
	DAD	SP
	SPHL
	PUSH	D
	lxi	h,cret
	push	h
	mov	h,b
	mov	l,c
	pchl
PS. Дико извиняюсь за hijack треда.