Page 1 of 1
vrr_m
Posted: Thu Feb 22, 2007 11:29 pm
by Heavyiron
Обнаружил сегодня такие строки в исходниках vrr_m:
; \begin{Serge}
; A you really believe it?
; Блажен, кто верует, тепло ему на свете!
; \end{Serge}

Это о чем вообще?
Posted: Fri Feb 23, 2007 8:57 am
by Serge
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 то ноль должен стоять явно и рассчитывать на систему не стоит.
Posted: Sat Feb 24, 2007 10:37 am
by Ghost
Кстати память вовсе не обязательно обнуляется (как повезёт), по этому поводу у меня были проблемы с графиком в gmon, изначально там был расчёт на автообнуление, у меня всё работало, а у Mario79 график безбожно гнал... всё дело было в нулях )
Posted: Sat Feb 24, 2007 1:29 pm
by Serge
Ghost
Сейчас точно обнуляется от конца файла до app_mem в заголовке.
Posted: Sun Feb 25, 2007 4:48 pm
by Mario79
Это еще что! Про нашу фантастическую лень просто говорить не имеет смысла, взглянуть на заголовок - там осталось еще то, что я поленился убрать.
;
; Пример программы для MenuetOS
; озвучивает код нажатой клавиши

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

Posted: Mon Feb 26, 2007 6:33 pm
by diamond
Кстати память вовсе не обязательно обнуляется (как повезёт),
Память должна обнуляться. Иначе возникнут проблемы с некоторыми существующими приложениями. С этим были связаны некоторые проблемы 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 байт) сделать не получится
