Size: a a a

Ассемблер

2021 June 16

A

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

D

Den in Ассемблер
это ты написал, ну ты крутой! я вообще подумал это машинный код какой то типа сгенеренный какой то средой :)
источник

АВ

А зачем Вам in Ассемблер
Возьми jonesforth.S и перепиши его на фасм
источник

D

Den in Ассемблер
когда смотрю на исходники masm они в тоску вгоняют, когда учишь скрипты от нескольких асмов в голове такой бардак, до сих пор скрипты nasm и fasm путаю хотя они похожи, а у masm если еще будешь разбираться наверное голова кругом будет вообще там вроде тоже ведь скрипты суперпродвинутые, тут бы один освоить, скрипты фасма вроде очень даже ниче
источник

D

Den in Ассемблер
а это про что?
источник

АШ

Алексей Шведов... in Ассемблер
Хочу с вами поделиться!
GCC скомпилировал вот такой вот глупый код на 126 тиков (учитывается GetTickCount, написанный на Си, где тоже не очень оптимизированный код - ~26 тиков)
И я написал точно такой же код на 58 тиков
Ассемблерщики ещё нужны этому миру
источник

АШ

Алексей Шведов... in Ассемблер
источник

АШ

Алексей Шведов... in Ассемблер
И мой код на 58 тиков
Считал по готовым замерам на свой процессор, но в такой большой разнице уже не важно, какой процессор, на ассемблере это выполнится быстрее!
источник

АШ

Алексей Шведов... in Ассемблер
Ах да, флаг /O2 - максимальная скорость (что-ж, не очень и максимальная)
источник

s

s54816 in Ассемблер
Ты бы ещё через time() тики считал.
источник

АШ

Алексей Шведов... in Ассемблер
Я считаю тики по таблице для своего процессора, а это просто функция для разнообразия, чтобы компилятор хитро не просчитал всё до компиляции
источник

АШ

Алексей Шведов... in Ассемблер
Мне вот нравится, как GCC жонглирует регистрами для div/mul. Всё таки он ещё не до конца ИИ, потому что не может разобрать, как удобно использовать регистры, и просто их сохраняет в стэк, а потом восстанавливает, когда у него есть ещё пара свободных регистров...
источник

s

s54816 in Ассемблер
Потому что GCC знает, что GetTickCount никак не гарантирует сохранности eax/ecx/edx. Раз уж тебе нечем заняться, напиши на самом деле эквивалентный код на Си, чтобы он тоже читал из KUSER_SHARED_DATA.
источник

АШ

Алексей Шведов... in Ассемблер
Зачем?)
Все, кто пишет на Си - не используют KUSER_SHARED_DATA напрямую, потому что они привыкли к высокоуровневости.

И ты уверен, что GCC сгенерирует код быстрее, чем тот, что я написал, даже если написать напрямую с SHARED_DATA?
источник

s

s54816 in Ассемблер
Конечно не используют. Это недокументированная структура, никто не гарантирует, что она будет в следующей винде (нет, мы-то знаем, что скорее всего будет, но это не часть API).
источник

АШ

Алексей Шведов... in Ассемблер
Ну правильно, переносимость, всё такое. Но если уж и писать на ассемблере с мозгами, то выйдет побыстрее Си.
И я вот уже посчитал GetTickCount (kernel32 же на Си написан, и работает с KUSER_SHARED_DATA), и он выходит на 24 тика, когда у меня такой же код на 17 (не считая lea - 16) тиков
источник

АВ

А зачем Вам in Ассемблер
Про форт
источник

АШ

Алексей Шведов... in Ассемблер
Ну и чтобы не пустословить, то вот Си, GCC, и KUSER_SHARED_DATA напрямую. Лучше не стало
(на x86 он тоже сначала помещает адрес, а потом получает значение, вместо того, чтобы сразу получить значение по адресу)
источник

D

Den in Ассемблер
слышал когда то что был такой язык програмирования это все что мне известно, ты шутишь наверное, я тут хеловорды изучаю а ты предлогаешь интерпритатор переписать :)
источник

АВ

А зачем Вам in Ассемблер
Ну ты посмотри сначала потом говори
источник