Page 10 of 10

Re: ряд вопросов по FASM

Posted: Sat Jan 30, 2016 10:31 am
by Scampada
Привет. Кто подскажет, почему этот фрагмент не работает, в чем ошибка?

Code: Select all

cmp byte [I_Param+5], 'B'
jz BtClrSet
inc edx
cmp byte [I_Param+5], 'R'
jz BtClrSet
inc edx
BtClrSet:
Я передаю в аргументах строку "BOOT R" (например). Вывод byte [I_Param+5] в debug работает, а вот сравнения почему-то не происходит, что я упустил?
По-моему - при сравнении флаги каждый раз разные... если сделать jnz, то прыжок происходит (но не работает логика).

Re: ряд вопросов по FASM

Posted: Sat Jan 30, 2016 2:09 pm
by Scampada
Разобрался: по какой-то причине по этому адресу к моменту сравнения оказывается 00h.
Вопрос почему, буду трассировать дальше.

Re: ряд вопросов по FASM

Posted: Tue Sep 05, 2017 5:39 pm
by Leency
За что я не люблю программы на ассемблере, так это за такие вот конструкции. (В ЯВУ тоже говна хватает, но сейчас не об этом (программирование вообще зло) )
OU1hnI3kQYSipEhjVRK3Jg.png
OU1hnI3kQYSipEhjVRK3Jg.png (11.35 KiB)
Viewed 6904 times
Вместо простой и понятной mov eax,4 стоит менее очевидная shr eax,1 (eax=8).
Идеальным даже было бы mov eax,SF_DRAW_TEXT.

Как я понимаю, автор наверно хотел оптимизировать код.

А как вы читаете, оптимизация здесь уместна или нет?
Есть смысл заменять shr на mov?

Re: ряд вопросов по FASM

Posted: Tue Sep 05, 2017 6:51 pm
by akron1

Code: Select all

mov eax, 4 ;гекс-код "B804000000"
shr eax, 1 ;гекс-код "D1E8"
Как видно, автор сэкономил 3 байта. Подобная ручная оптимизация ни к чему хорошему не приводит. На асме лучше писать предельно понятно. Ведь главная причина больших размеров современных ЯВУ-программ -- это не плохие компиляторы, а большие библиотеки и жирные рантаймы, чего нет в ассемблере. И уже поэтому небольшие программы на асме будут намного легче своих аналогов на ЯВУ. И без какой-либо ручной оптимизации...
Ну, это чисто мое мнение, если три байта это важно -- оптимизируйте. :)

Re: ряд вопросов по FASM

Posted: Tue Sep 05, 2017 6:54 pm
by 0CodErr
Leency, да тут почти во всём проекте так.

Вот, например, из ядра(то, что прямо сейчас передо мной):

Code: Select all

        mov     ecx, ebp
        shr     ecx, 2
        mov     [esp+36], eax
        sub     edi, eax
        mov     edx, eax
        mov     eax, [esp+24]
        cmp     eax, -1
        jnz     @f
        mov     [esp+28], edi
почему shr 2? что за esp +36 +24 +28 ???

Code: Select all

        not     ecx
        rol     ecx, 8
        mov     cl, [esp+32-8+3]
        ror     ecx, 8
        mov     [esp+32-8], ecx
и тут не лучше.

Для меня на первом месте всё же понятность кода. А то потом через месяц сам же и забудешь что там и для чего.

Вполне возможно, что это одна из причин медленного развития. Кто-то новый приходит, открывает код, а там всё через одно место. Ну и закрывает и уходит соответственно.

Некоторые участники вставляют ассемблерный код, полученный с помощью си-компилятора.
И оставляют как есть всякие параметры функций и локальные переменные ([esp+8], [esp-8] и т.д.)

Re: ряд вопросов по FASM

Posted: Tue Sep 05, 2017 7:13 pm
by akron1
0CodErr wrote: Вполне возможно, что это одна из причин медленного развития. Кто-то новый приходит, открывает код, а там всё через одно место. Ну и закрывает и уходит соответственно.
Это, главным образом, касается разработки ядра. Разработка прикладных программ уже давно возможна на ЯВУ. Но особого развития не заметно. Я думаю, причина остановки развития -- это фактическая смерть десктопа. Резкое падение спроса на десктоп-компьютеры и снижение интереса разработки для них.

Re: ряд вопросов по FASM

Posted: Tue Sep 05, 2017 7:51 pm
by Leency
(оффтоп)
Колибри ОС проиграла по многим причинам. Ассемблер сложно читать, сложнее писать понятные программы, в отличии от яву с human readable названиями функций.

Десктоп полуживой. Мобильные устройства меняются каждые 2 года, дестктопы минимум раз в 5 лет. Сейчас уже подрастает поколение у которых дома нет компов, только мобильные телефоны.
Интернет уже это самая настоящая часть жизни каждого из нас, не только гиков, почти каждого человека до 50 лет.

Почему все так слабо сейчас, потому что в Колибри нет полноценного интернета.
Дай wifi и современный браузер - можно будет жить.

Re: ряд вопросов по FASM

Posted: Wed Sep 06, 2017 1:06 am
by Pathoswithin
А при чём здесь ассемблер? Такие программисты. Можно mov al, 4
Мне бы ваши проблемы, вон в драйвере FAT вообще куча [esp+16+8+12+8]. Причём, это Брыллиантовое наследство.

Вообще-то, КОС не только для десктопов, но и для ноутбуков. И всё ещё немало людей с мобильным телефоном, а не смартфоном.

Re: ряд вопросов по FASM

Posted: Wed Sep 06, 2017 11:12 am
by Leency
>И всё ещё немало людей с мобильным телефоном, а не смартфоном.
Мало. :)