vrr_m

No comments
  • Code: Select all

            db      '/RD/1/LAUNCHER'
    I_END:                             ; ¬ҐвЄ  Є®­ж  Їа®Ја ¬¬л
            db      ?       ; system loader will zero all memory after program end
                            ; this byte will be terminating zero for launcher string
    
    Heavyiron
    Это был коментарий на коментарий. Строка '/RD/1/LAUNCHER' должна заканчиваться 0 но не ней сэкономили один байт и поставили дальше db ? в рассчёте на то что система обнулит память. ИМХО если строка asciiz то ноль должен стоять явно и рассчитывать на систему не стоит.
  • Кстати память вовсе не обязательно обнуляется (как повезёт), по этому поводу у меня были проблемы с графиком в gmon, изначально там был расчёт на автообнуление, у меня всё работало, а у Mario79 график безбожно гнал... всё дело было в нулях )
  • Ghost
    Сейчас точно обнуляется от конца файла до app_mem в заголовке.
  • Это еще что! Про нашу фантастическую лень просто говорить не имеет смысла, взглянуть на заголовок - там осталось еще то, что я поленился убрать. :-)

    ;
    ; Пример программы для MenuetOS
    ; озвучивает код нажатой клавиши ;)
    ;
    ; Компилировать FASM'ом
    ;
    ; См. также:
    ; template.asm - пример простейшей программы (новый!)
    ; rb.asm - контекстное меню рабочего стола
    ; example2.asm - пример меню и дополнительных окон
    ; example3.asm - пример меню, реализованного по-другому

    Ни один "шпиен" не догадается, даже если будет переводить. ;-)
  • Кстати память вовсе не обязательно обнуляется (как повезёт),
    Память должна обнуляться. Иначе возникнут проблемы с некоторыми существующими приложениями. С этим были связаны некоторые проблемы mtappack (старых версий) на некоторых приложениях. Например, FASM при не-обнулённой памяти ругается "out of memory".
    должна заканчиваться 0 но не ней сэкономили один байт и поставили дальше db ?
    Это я прикалывался с оптимизацией по размеру. В процессе переписывания всех программ на запуск через 70.7 vrr_m (которая раньше имела размер 150 байт) несколько раздулась - всё-таки структура для функции 70 занимает несколько больше места, чем загрузка значений в регистры для бывшей функции 19. Я решил продемонстрировать неоптимальность существующего кода и снова ужал ровно до 150 байт :)
    P.S. В принципе можно ещё немного сократить за счёт читерских приёмчиков с использованием последних полей заголовка в "неправильных" целях (в качестве кода) с расчётом на то, что некорректные значения для i_param и i_icon (aka i_path) игнорируются, но, во-первых, это всё же недокументированное читерство, которое может когда-нибудь перестать работать, а, во-вторых, не имеет смысла - всё равно программу меньше сектора (512 байт) сделать не получится ;)
    Ушёл к умным, знающим и культурным людям.
  • Who is online

    Users browsing this forum: No registered users and 6 guests