Ещё больше странных вопросов. Пожалуй оставлю за собой право на этот вопрос не отвечать.
Сначала я должен узнать, какое отношение эти вопросы имеют к теме разговора.
Тогда ответьте сначала вы на этот свой вопрос, чтобы так сказать знать, куда копать
Тадт , но способы организации стека мне известны и абревиатуру на английском расшифровать мне хватает мозгов.
Ты молодец, мы все гордимся тобой. А соглашения-то тут каким местом?
Какой смысл тогда от cdecl тогда Просто. Чтобы было?
Передавать переменное число аргументов, например.
cdecl позволяет конопляторам оптимизировать последовательный вызов функций с одинаковыми параметрами. А еще да, функции с переменным числом параметров.
Слушай, вот ты задавал много вопросов тут. А давай я тебе задам. Какие ты знаешь соглашения о вызовах, принятые на архитектуре х86_32?
Ну возможно компиляторы так делают когда уверены, что функция их не изменит🤷♂️. Я читал про такой способ оптимизации просто
И чем они между собой отличаются
А как же я буфер передаю? Буферу я тоже назначаю размер
Не понимаю, это значит,что stdcall не может переменное число аргументов принять?
Это значит, что в stdcall ты должен ret N, а сколько N?
N само определится, а если я пишу функцию, я должен предусмотреть
Само в ассемблере ничего не бывает. Вызываемая функция не знает заранее, сколько передала вызывающая. Ты можешь заняться извращениями. Например, вместо ret N написать в stdcall: pop edx ; адрес возврата add esp,ecx ; в ecx ты вычислил во время работы функции ; сколько должно было быть байтов в аргументах ; и надеешься, что тебе передали имеено столько jmp edx ; возврат Но это костыль. И такие функции сложнее вызывать из Си (тоже потребуются костыли).
Обсуждают сегодня