Обнаружил сегодня такие строки в исходниках vrr_m:
; \begin{Serge}
; A you really believe it?
; Блажен, кто верует, тепло ему на свете!
; \end{Serge}
Это о чем вообще?
vrr_m
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
Это был коментарий на коментарий. Строка '/RD/1/LAUNCHER' должна заканчиваться 0 но не ней сэкономили один байт и поставили дальше db ? в рассчёте на то что система обнулит память. ИМХО если строка asciiz то ноль должен стоять явно и рассчитывать на систему не стоит.
Кстати память вовсе не обязательно обнуляется (как повезёт), по этому поводу у меня были проблемы с графиком в gmon, изначально там был расчёт на автообнуление, у меня всё работало, а у Mario79 график безбожно гнал... всё дело было в нулях )
Ghost
Сейчас точно обнуляется от конца файла до app_mem в заголовке.
Сейчас точно обнуляется от конца файла до app_mem в заголовке.
Это еще что! Про нашу фантастическую лень просто говорить не имеет смысла, взглянуть на заголовок - там осталось еще то, что я поленился убрать.
;
; Пример программы для MenuetOS
; озвучивает код нажатой клавиши
;
; Компилировать FASM'ом
;
; См. также:
; template.asm - пример простейшей программы (новый!)
; rb.asm - контекстное меню рабочего стола
; example2.asm - пример меню и дополнительных окон
; example3.asm - пример меню, реализованного по-другому
Ни один "шпиен" не догадается, даже если будет переводить.
;
; Пример программы для MenuetOS
; озвучивает код нажатой клавиши
;
; Компилировать FASM'ом
;
; См. также:
; template.asm - пример простейшей программы (новый!)
; rb.asm - контекстное меню рабочего стола
; example2.asm - пример меню и дополнительных окон
; example3.asm - пример меню, реализованного по-другому
Ни один "шпиен" не догадается, даже если будет переводить.
Память должна обнуляться. Иначе возникнут проблемы с некоторыми существующими приложениями. С этим были связаны некоторые проблемы mtappack (старых версий) на некоторых приложениях. Например, FASM при не-обнулённой памяти ругается "out of memory".Кстати память вовсе не обязательно обнуляется (как повезёт),
Это я прикалывался с оптимизацией по размеру. В процессе переписывания всех программ на запуск через 70.7 vrr_m (которая раньше имела размер 150 байт) несколько раздулась - всё-таки структура для функции 70 занимает несколько больше места, чем загрузка значений в регистры для бывшей функции 19. Я решил продемонстрировать неоптимальность существующего кода и снова ужал ровно до 150 байтдолжна заканчиваться 0 но не ней сэкономили один байт и поставили дальше db ?
P.S. В принципе можно ещё немного сократить за счёт читерских приёмчиков с использованием последних полей заголовка в "неправильных" целях (в качестве кода) с расчётом на то, что некорректные значения для i_param и i_icon (aka i_path) игнорируются, но, во-первых, это всё же недокументированное читерство, которое может когда-нибудь перестать работать, а, во-вторых, не имеет смысла - всё равно программу меньше сектора (512 байт) сделать не получится
Ушёл к умным, знающим и культурным людям.
Who is online
Users browsing this forum: No registered users and 6 guests