Смотрел примеры FASM заинтересовала строка sub rsp,8*5 ; reserve stack for API use and make stack dqword aligned Почему в 32 битном режиме стек устанавливается сам а тут нет - надо резервировать? И почему если заменить на sub rsp,8*8 ; не работает программа?
Выравнивание по 16 байтам чтобы вызванная процедура была уверена, что может располагать переменные для всякого SSE выровненными в стеке, ибо там выравнивание критично важно для работы. А на линуксах еще нету того дурацкого правила, что даже если у процедуры меньше, чем 4 параметра (включая 0), то место как бы под них на винде всё-равно надо выделять.
SlaVVVa, при вызове процедуры в стек помещается адрес возврата из процедуры, а это как раз 8 байт. Вы внимательно перечитали ту ссылку, которую я вам дал? Программные соглашения x64
сколтко не читал не понимаю раздел Unwindability (Способность очищаться, раскрутка) - про какую очистку идёт речь? а что такое xdata? --- Сообщение объединено, 19 янв 2023 --- Mikl___, В примере 4 опечатка - должно быть union а там struct.
Там очень много "продвинутого материала", который на начальных этапах даже не надо пытаться понимать. Очень подробная просто и исчерпывающая статья, но для начала избыточная очень. Можно еще тут посмотреть азы https://wasm.in/threads/utochnenie-po-peredachi-argumentov.34595/