|
Возврат структуры из функции, косяк Кернигана-Ричи |
|
|
|
 |
Ответов
|
Mar 13 2015, 15:17
|
self made
   
Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795

|
Цитата(SM @ Feb 9 2015, 03:29)  А никто так и не делает. Возвращают данные, которые компилятор неявно копирует из локальной переменной в lvalue, указатель на который также неявно передается в ф-цию. То есть, возвращаются только данные. Компилятор ничего подобного не делает, и никаких "неявных адресов возврата" в функцию не передается. Функция находит свои параметры, локальные переменные и результат относительно указателя стека. Цитата(Grizzzly @ Feb 9 2015, 07:42)  В компиляторе VC 2005 в функцию передается на регистре адрес зарезервированный области. Возможно, в более поздних версиях и других компиляторах этого нет. Какой еще зарезервироавнной области? Что вы такое говорите? "С" calling convention никто не отменял и компилятор того что вы говорите просто не может делать. Я думаю вы неправильно поняли листинг.
|
|
|
|
|
Mar 16 2015, 12:21
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(ar__systems @ Mar 13 2015, 18:17)  Какой еще зарезервироавнной области? Что вы такое говорите? "С" calling convention никто не отменял и компилятор того что вы говорите просто не может делать. Я думаю вы неправильно поняли листинг. Ох уж эти сказочники  'Не может, не может', еще и "С" calling convention сюда приплели Вот, выдержка из вашего любимого calling conversion (прямо с сайта MS) Цитата On x86 plaftorms, all arguments are widened to 32 bits when they are passed. Return values are also widened to 32 bits and returned in the EAX register, except for 8-byte structures, which are returned in the EDX:EAX register pair. Larger structures are returned in the EAX register as pointers to hidden return structures. Parameters are pushed onto the stack from right to left. Structures that are not PODs will not be returned in registers.
|
|
|
|
Сообщений в этой теме
ViKo Возврат структуры из функции Feb 9 2015, 07:04 Grizzzly Цитата(ViKo @ Feb 9 2015, 10:04) Как это ... Feb 9 2015, 07:26 jcxz Цитата(Grizzzly @ Feb 9 2015, 13:26) Комп... Feb 9 2015, 12:09  SM Цитата(jcxz @ Feb 9 2015, 15:09) Не смотр... Feb 9 2015, 12:41   Grizzzly Цитата(SM @ Feb 9 2015, 15:41) а вот фраг... Feb 9 2015, 12:45  Grizzzly Цитата(jcxz @ Feb 9 2015, 15:09) Не смотр... Feb 9 2015, 12:42   SM Цитата(Grizzzly @ Feb 9 2015, 15:42) Возм... Feb 9 2015, 12:43 ViKo Тогда это должно называться возврат указателя на с... Feb 9 2015, 07:45 Bear_ku Цитата(ViKo @ Feb 9 2015, 12:45) Тогда эт... Feb 9 2015, 08:52 ViKo Ничего не понимаю. То, что передается в функцию, н... Feb 9 2015, 08:52 SM Цитата(ViKo @ Feb 9 2015, 11:52) Если мож... Feb 9 2015, 09:00  ViKo Цитата(SM @ Feb 9 2015, 12:00) А аналогич... Feb 9 2015, 09:09   SM Цитата(ViKo @ Feb 9 2015, 12:08) Единстве... Feb 9 2015, 09:11   andrew_b Цитата(ViKo @ Feb 9 2015, 12:09) Число ил... Feb 9 2015, 09:13   SSerge Цитата(ViKo @ Feb 9 2015, 16:09) Кто же и... Feb 9 2015, 09:33 andrew_b Вас же не смущает возврат, например, целого числа.... Feb 9 2015, 09:05 ViKo Будем считать что я осознал и раскаялся... (хотя р... Feb 9 2015, 09:27 SM Цитата(ViKo @ Feb 9 2015, 12:27) Я же не ... Feb 9 2015, 09:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|