Size: a a a

Ассемблер

2021 April 30

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
функция должна возвращать всегда 1 значение через 1 регистр. если у тя два значения (да-отработала, то вот еще 1 возвращаемое значение -адресс), то так не надо делать. при этом усложняется код и используется больше объектов для проверки значения функции
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
если возвращаешь булево значение, то в других регистрах ничего неидолжнотпередаваться. в твоем случае лучше убить сразу двух зайцев, возвращай все в rax, а не через флаг, в CF не поместится адрес
источник

d

disba1ancer in Ассемблер
С cf можно если одно из значение булево
источник

d

disba1ancer in Ассемблер
В cf булево значение, а в регистре результат
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
с rax можно если и булево и конкретное значение
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
все что не ноль это true
источник

d

disba1ancer in Ассемблер
Если нужны все 32 бита точности для значения, то не прокатит
источник

d

disba1ancer in Ассемблер
А если в случае ошибки мы хотим её код получить?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
а вот для таких случаев вопрошающий должен показать алгоритм возвращения значения функцией
источник

d

disba1ancer in Ассемблер
Имхо сигнализировать ошибку через cf нормальный, даже в плюсах предлагали в качестве реализации исключений, и в мишке возможность обработки таких случаев
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
ну тут вопрос не о нормальности, а о изящности
источник

d

disba1ancer in Ассемблер
Очень даже изящно
источник

d

disba1ancer in Ассемблер
У нас получается полный размер регистра + булево
источник

d

disba1ancer in Ассемблер
В остальных случаях булево будет отъедать от значений регистра
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
я предлагаю свой вариант с условием что, когда функция не отработала - rax=0 (false), когда отработала rax=adress (true)
источник

d

disba1ancer in Ассемблер
А если у тебя не указатель? А какое-нибудь 64 битное значение?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
пихай туда, если мала - полно других стандартизированных методов
источник

d

disba1ancer in Ассемблер
И что же это за другие методы?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
через структуру
источник

С

Сергей in Ассемблер
А стек не подходит? Или да, динамический набор структур и всё.
источник