Size: a a a

Ассемблер

2021 May 31

A

Aleksandr in Ассемблер
А вот нет, моя ошибка, действительно использовался стек
источник

АШ

Алексей Шведов... in Ассемблер
Через стэк намного удобнее. Не нужно морочиться с сохранением регистров, да и кол-во аргументов не так сильно ограничено, как кол-во самих регистров... Ох уж эти "принятия"
источник

A

Aleksandr in Ассемблер
Регистры быстрее. Правда, конвенция вызовов так устроена, что в итоге все равно не сильно ускоряется
источник

A

Aleksandr in Ассемблер
К тому же, мало какая функция принимает более четырех-пяти параметров
источник

DF

Dollar Føølish in Ассемблер
А могла бы
источник

DF

Dollar Føølish in Ассемблер
Prctl
источник

s

s54816 in Ассемблер
Вы сейчас про сисколлы или про функции? Сисколлам можно сколько угодно аргументов сложить в структуру и передать адрес. Функциям, если все аргументы в регистры не влезли, остаток передаётся через стек.
источник

АШ

Алексей Шведов... in Ассемблер
Ну вообще про сисколлы
источник

АШ

Алексей Шведов... in Ассемблер
Я 5 минут назад сидел, и думал - "хорошо, что хоть не сделали, чтобы адрес на структуру передавать, как в CreateThread(WinApi) для передачи больше одного аргумента в функцию"
источник

АШ

Алексей Шведов... in Ассемблер
Оказывается, сделали
источник

s

s54816 in Ассемблер
А что не так? В Си, особенно в современном Си очень удобно. Как ты функцию с двадцатью аргументами без IDE читать будешь? Ты точно помнишь, кто их них кто? А со структурой ты всё по присваиваниям увидишь.
источник

АШ

Алексей Шведов... in Ассемблер
Да я особо не углублялся, но звучит это не очень.
В стэке всё просто - узнал параметры, положил, а потом считал
Не ясно, чем не понравилось им это..
источник

АШ

Алексей Шведов... in Ассемблер
Но, кстати, на практике метод с адресом на структуру мне понравился, удобно передавать всего один аргумент, а инициализировать где-то вдалеке
источник

s

s54816 in Ассемблер
А в ассемблере тебе никто не мешает. Взял структуру, запушил её элементы по одному, начиная с конца, точно так же, как передавал бы параметры. Под конец сохранил/передал rsp. Единственное неудобство — нужно не забыть прибрать за собой.
источник

АШ

Алексей Шведов... in Ассемблер
А что насчёт передачи через регистры, опять же. Если можно было сделать всё это более красиво.
Вот мне неприятно перед вызовом сисколла запоминать какой регистр за что отвечает - а в разных ОС они отвечает по разному, в каком-то ecx - номер, в каком-то eax, а в каком-то ebx... И всё это путается, когда можно было сделать по структуре, либо по стэку
источник

A

Aleksandr in Ассемблер
Так правила те же, что и со стеком. Нужно просто запомнить порядок регистров, один на все функции внутри системы
источник

s

s54816 in Ассемблер
Для тебя придумали либц.
источник

D

Den in Ассемблер
Ну вот сделал калькулятор, зацените! Операции + - / (%-деление с остатком по модулю) * и интерактивная регулировка точности знаков после запятой в режиме обычного деления, сколько знаков можно точность сделать даже не попробовал, но думаю больше чем сопроцессор :D
источник

D

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

D

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