Size: a a a

Ассемблер

2019 December 12

MW

Mohammad Wolf in Ассемблер
Ну данные копируются в моей функции си. Ты си хорошо знаешь?
источник

Н

Никита in Ассемблер
ну
источник

Н

Никита in Ассемблер
в параметрах?
источник

MW

Mohammad Wolf in Ассемблер
Никита
в параметрах?
Аргумент в функции копируется
источник

MW

Mohammad Wolf in Ассемблер
Ладно, посмотрю. Спасибо огромное!
источник

Н

Никита in Ассемблер
ну да, через push
источник

Н

Никита in Ассемблер
пуш это короткий эквивалент
push arg
==
mov [rsp],arg
sub rsp,8
источник

Н

Никита in Ассемблер
в х64 сами значения не копируются
источник

Н

Никита in Ассемблер
поэтому от пушей остаются sub'ы
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in Ассемблер
меня еще смущает что в обоих файлах (асм си) присутствует extern printResult
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in Ассемблер
так и должно быть?
источник

Н

Никита in Ассемблер
ну раз компилится значит да
источник

MW

Mohammad Wolf in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
меня еще смущает что в обоих файлах (асм си) присутствует extern printResult
в неконстантной глобального объявление переменной extern указывает, что переменная или функция определен в другой записи преобразования. Extern должны применяться во всех файлах за исключением того, где определена переменная. https://docs.microsoft.com/ru-ru/cpp/cpp/extern-cpp?view=vs-2019. Ну это msvc конечно. Я использую gcc. Убрал я этот extern, т.к. объявил функцию в этом же файле
источник

MW

Mohammad Wolf in Ассемблер
Никита
так вот для каждого параметра надо добавить по sub rsp,8
sub rsp,8*argc
я не врубаюсь. rsp - он же показывает аргументы программы, да?
источник

Н

Никита in Ассемблер
нет
источник

Н

Никита in Ассемблер
это указатель на вершину стека
источник

Н

Никита in Ассемблер
а сам стек (rsp+rbp) используется для вызова функциий и для выделения памяти под локальные переменные и параметры
источник

Н

Никита in Ассемблер
тут ключевое для понимания слово стек а не rsp - rps это обычный регистр который выделели под работу со стеком
источник

Н

Никита in Ассемблер
Ну... нет потомуш х64
источник

MW

Mohammad Wolf in Ассемблер
ой-ой
источник