[ZX]
- 
	
- Или внутри функций проверять а не маловат ли запас? Может попросить операционную систему какой-нибудь malloc() - SS:ESP(30.10.2013 11:48, 
)
			- Внутри вызванной функции, если маловат -- что делать?  Только abort() и остаётся. Стек уже не переместишь (в нём locals и arguments). А в вызывающей функции вместо call вполне можно сделать перемену стека и call функции в новом стеке. - fk0(30.10.2013 12:26)
					
- abort() только в случае if(malloc(4096)==NULL){exit(1);} Тогда уж больше некуда. Соответственно или редизайн, или толще камень - SS:ESP(30.10.2013 14:02, 
)
							
						 - Не обязательно, хотя сложнее работать с аргументами. Сохранить текущий sp, попросить новый блок памяти, загрузить новый sp, юзать, перед выходом освободить блок, вернуть старый sp. - SS:ESP(30.10.2013 13:46, 
)
							- Замечтельно. Но как в новом стеке получить доступ к аргументам и переменным функции в _старом_. И как быть, что теперь часть переменных у нас в новом стеке, а часть в старом. Невозможно!  Только если это всё проделать в прологе функции и,  fk0(486 знак., 30.10.2013 14:04)
									
- А разве в прототипе функции не указывается количество и тип аргументов ?-) Или функция должна угадать количество pop перед ret ?-) - SS:ESP(30.10.2013 14:20, 
)
											- Для функций с переменным числом аргументов pop будет делать тот кто вызывал. Поэтому не указывается. В паскале обратный порядок передачи аргументов в функцию, поэтому у них вовсе нет таких функций и невозможно на паскале написать функцию Writeln  fk0(31 знак., 30.10.2013 14:53)
													
- Метки и переходы запретить! Кто не согласен, того на костер! - Облез Паскаль(30.10.2013 22:04, 
) 
 - Метки и переходы запретить! Кто не согласен, того на костер! - Облез Паскаль(30.10.2013 22:04, 
 - Не надо дублировать аргументы в новом стеке, нужно знать адресную арифметику конкретного компилятора. Не сложно, но заморочено Ж-( - SS:ESP(30.10.2013 14:20, 
)
													- Конечно проверять размер остатка стека сразу в начале функции и адресовать аргументы через вспомогательный указатель - не айс - SS:ESP(30.10.2013 14:21, 
)
															- Например для потоков использовать единственный аргумент - указатель на структуру с полным фаршем переменных и аргументов - SS:ESP(30.10.2013 14:22, 
)
																	- Это какой-то альтернативный компилятор не-C из альтернативной вселенной. Разговор ни о чём. - fk0(30.10.2013 14:54)
																			
- Указатель, структура - более чем C. Один аргумент - не надо ничего копировать между стеками - SS:ESP(30.10.2013 15:02, 
)
																					- Это уже какой-то словесный понос. Вот практический пример: как быть в случае printf("hello world %u %u %u %u %u...", 1,2,3,4,5,6,....100500....) ?  И один аргумент может передаваться в стеке: void f(...) и f(1) потом. Или если gcc -O0 - fk0(30.10.2013 15:07)
																							
- Практический ответ для любого компилятора: резервируете где хотите область памяти для строки желаемого формата (хоть с китайским %s), также область памяти под массив указателей на переменные к печати. Ну сами переменные, я надеюсь это понятно.  SS:ESP(161 знак., 30.10.2013 15:28, 
) - Покажите где ранее я сказал, что ЛЮБОЙ функции достаточно единственного аргумента? - SS:ESP(30.10.2013 15:27, 
)
																									- Понятно. Тролля лучше не кормить. - fk0(30.10.2013 15:42)
																											
- Реализация описанного - работа и ответственность программиста. Не компилятора - SS:ESP(30.10.2013 16:02, 
) 
 - Реализация описанного - работа и ответственность программиста. Не компилятора - SS:ESP(30.10.2013 16:02, 
 
 - Понятно. Тролля лучше не кормить. - fk0(30.10.2013 15:42)
																											
 
 - Практический ответ для любого компилятора: резервируете где хотите область памяти для строки желаемого формата (хоть с китайским %s), также область памяти под массив указателей на переменные к печати. Ну сами переменные, я надеюсь это понятно.  SS:ESP(161 знак., 30.10.2013 15:28, 
 
 - Это уже какой-то словесный понос. Вот практический пример: как быть в случае printf("hello world %u %u %u %u %u...", 1,2,3,4,5,6,....100500....) ?  И один аргумент может передаваться в стеке: void f(...) и f(1) потом. Или если gcc -O0 - fk0(30.10.2013 15:07)
																							
 
 - Указатель, структура - более чем C. Один аргумент - не надо ничего копировать между стеками - SS:ESP(30.10.2013 15:02, 
 
 - Это какой-то альтернативный компилятор не-C из альтернативной вселенной. Разговор ни о чём. - fk0(30.10.2013 14:54)
																			
 
 - Например для потоков использовать единственный аргумент - указатель на структуру с полным фаршем переменных и аргументов - SS:ESP(30.10.2013 14:22, 
 
 - Конечно проверять размер остатка стека сразу в начале функции и адресовать аргументы через вспомогательный указатель - не айс - SS:ESP(30.10.2013 14:21, 
 
 - Для функций с переменным числом аргументов pop будет делать тот кто вызывал. Поэтому не указывается. В паскале обратный порядок передачи аргументов в функцию, поэтому у них вовсе нет таких функций и невозможно на паскале написать функцию Writeln  fk0(31 знак., 30.10.2013 14:53)
													
 
 - А разве в прототипе функции не указывается количество и тип аргументов ?-) Или функция должна угадать количество pop перед ret ?-) - SS:ESP(30.10.2013 14:20, 
 
 - Замечтельно. Но как в новом стеке получить доступ к аргументам и переменным функции в _старом_. И как быть, что теперь часть переменных у нас в новом стеке, а часть в старом. Невозможно!  Только если это всё проделать в прологе функции и,  fk0(486 знак., 30.10.2013 14:04)
									
 
 - abort() только в случае if(malloc(4096)==NULL){exit(1);} Тогда уж больше некуда. Соответственно или редизайн, или толще камень - SS:ESP(30.10.2013 14:02, 
 
 - Внутри вызванной функции, если маловат -- что делать?  Только abort() и остаётся. Стек уже не переместишь (в нём locals и arguments). А в вызывающей функции вместо call вполне можно сделать перемену стека и call функции в новом стеке. - fk0(30.10.2013 12:26)
					
 - Если размер оперативной памяти стремится к бесконечности, можно умножить реальный расход на гугол :-) - SS:ESP(30.10.2013 11:47, 
) 
 - Или внутри функций проверять а не маловат ли запас? Может попросить операционную систему какой-нибудь malloc() - SS:ESP(30.10.2013 11:48,