- 
	
- Замечтельно. Но как в новом стеке получить доступ к аргументам и переменным функции в _старом_. И как быть, что теперь часть переменных у нас в новом стеке, а часть в старом. Невозможно!  Только если это всё проделать в прологе функции и,  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)