Size: a a a

Ассемблер

2020 December 28

D

Den in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Я к тому, что какой смысл смотреть тайминги 8086 в конце 2020 ?
у винды на сколько я помню какая то странная многозадачность, она тоже там какие то тики процессам выделяет, может прервать выполнение кода когда ей вздумается, может это как-то связано с результатами тестов?
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Den
у винды на сколько я помню какая то странная многозадачность, она тоже там какие то тики процессам выделяет, может прервать выполнение кода когда ей вздумается, может это как-то связано с результатами тестов?
Возможно, как-то и связано, поэтому я бы слишком длинные циклы не делал. Хотя, 4 млн - не настолько много. Не 1000 и не 500 раз в секунду идёт переключение контекста. Там четверть самых больших значений и четверть самых маленьких отрабатывается. Поэтому, ситуации, когда произошло переключение, должны отсеяться.
источник

D

Den in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Возможно, как-то и связано, поэтому я бы слишком длинные циклы не делал. Хотя, 4 млн - не настолько много. Не 1000 и не 500 раз в секунду идёт переключение контекста. Там четверть самых больших значений и четверть самых маленьких отрабатывается. Поэтому, ситуации, когда произошло переключение, должны отсеяться.
надо попробовать эти тесты под линуксом, там нормальная многозадачность и ядро не лезет в процессы так варварски на сколько я знаю, если разберусь попробую скомпилить на днях
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Den
надо попробовать эти тесты под линуксом, там нормальная многозадачность и ядро не лезет в процессы так варварски на сколько я знаю, если разберусь попробую скомпилить на днях
А как не варварски? :)
Там же не кооперативная многозадачность, когда процесс сам говорит, что готов к переключению :)

В линуксе, кстати, другие регистры используются при передаче параметров. Там много переделывать нужно будет, я думаю.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Я бы сделал циклов поменьше (и через dec\jz), а тестов побольше. Думаю, будет точнее результат.
И там где-то xor rbx,rbx лишний один. Адресовать лучше начало функции, чтобы было одинаково выравнивание.
источник

D

Den in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Я бы сделал циклов поменьше (и через dec\jz), а тестов побольше. Думаю, будет точнее результат.
И там где-то xor rbx,rbx лишний один. Адресовать лучше начало функции, чтобы было одинаково выравнивание.
а эти тики то надо делить на колличество итераций в твоем тесте, или это именно колличество тактов на одну операцию уже вычислено? Очень уж цифры большие
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Den
а эти тики то надо делить на колличество итераций в твоем тесте, или это именно колличество тактов на одну операцию уже вычислено? Очень уж цифры большие
Это один вызов процедуры.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Там миллион итераций в одной процедуре, поэтому и большие.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Кол-во вызовов задаётся ниже, после процедур, отдельной константой.
Вот их побольше сделать можно, а сам цикл покороче.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Есть а планах добавить возможность указания процедур подготовки и очищения, которые будут запускаться до вызова каждый функции и после, но в расчетах не учитываться.
источник

D

Den in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Там миллион итераций в одной процедуре, поэтому и большие.
процедура это loop например? 236022 такта, если разделить на миллион это меньше одного такта получиься на loop, примерно 0.25 такта как такое может быть?
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Den
процедура это loop например? 236022 такта, если разделить на миллион это меньше одного такта получиься на loop, примерно 0.25 такта как такое может быть?
Во-первых, там 65536 итераций (если он оставил там мой код), а во-вторых, процессоры давно уже суперскалярные (и имеет ещё 100500 разных оптимизаций и нюансов), и могут выполнять параллельно несколько инструкций. Не уверен, конечно, что такой цикл как-то ощутимо распараллелится, но всё же. Выходит примерно по 3.6 тактов.
источник

D

Den in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Во-первых, там 65536 итераций (если он оставил там мой код), а во-вторых, процессоры давно уже суперскалярные (и имеет ещё 100500 разных оптимизаций и нюансов), и могут выполнять параллельно несколько инструкций. Не уверен, конечно, что такой цикл как-то ощутимо распараллелится, но всё же. Выходит примерно по 3.6 тактов.
ну это вообще шикарно тогда, прямо как в этой старенькой табличке
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Den
ну это вообще шикарно тогда, прямо как в этой старенькой табличке
Ага, только там 17 тактов :)
источник

a

asm in Ассемблер
Добро пожаловать Alexander Belyaevskiy. Не ответив на вопрос, будешь удалён из чата
источник

AB

Alexander Belyaevski... in Ассемблер
Привет )
источник

AB

Alexander Belyaevski... in Ассемблер
Может кто нить по ассемблеру помочь ? Никак не могу одно задание выполнить
источник

AB

Alexander Belyaevski... in Ассемблер
источник

AB

Alexander Belyaevski... in Ассемблер
код в принципе есть, но не могу полностью разобраться что к чему ...
источник

КП

Котеечко Пухнастиньк... in Ассемблер
Dima Richev
Хочет сделать аналогичную команду, но что бы заняло меньше байтов
Больше байтов
источник