символические имена функциям ядра.

Assembler programming questions
  • Гм, посмотри исходник CPUID (файл svn://kolibrios.org/programs/system/cpuid/trunk/draw.inc). Я уже с конца 2004 года использую примерно то же самое. Если надо, то могу поискать menuett.inc (раньше лежал здесь http://menuet.narod.ru/download/menuett.rar).
  • Уже нашел.
    На сайте http://www.meosfiles.narod.ru/files/old/index.htm файл asm_book.7z и в нем есть menuett.inc.
  • Это не то же самое. Хотя результат и похож. Поддерживать такие вещи будет геморойнее. В моём варианте чтобы добавить новую функцию ядра достаточно вписать имя функции и ещё номер функции (и номер подфункции через пробел, если есть).
    Может стоит все программы перевести на подобный лад. У такого подхода много плюсов. И практически нет минусов, по сравнению с mcall
  • Какие несёт плюсы эта поделка в моём понимании:
    1) программа принимает более красивый и логичный вид. BeginPaint куда понятнее, чем

    Code: Select all

        mov     eax, 12
        mov     ebx, 1
        mcall
    2) мне не понятна схема распределния функций в ядре по номерам и их "подномерам". В функциях вроде 18-ой черт ногу сломит. Символические имена позволят оттолкнуться от этой схемы. Будет куда проще перераспределить номера функций, сгруппировать их как-то, или вообще прийти к другому соглашению о вызове функций ядра
    3) для внесения новых функций достаточно вписать одну строчку в kernel.inc (или как нибудь по другому назвать этот файл...). Не требуется никаких знаний макросов ФАСМ (хотя они никогда не помешают ;))

    Побеседовав с ghost-ом, выявили один минус.

    Code: Select all

    macro Window xStart,yStart,xSize,ySize,bColor,gColor,fColor
    {
     __mov ebx,xStart,xSize
    ...
    
    При таком раскладе мы имеем самодокументируемый код. Прикладному программисту сразу будет ясно для чего нужн каждый параметр. В моём варианте сделать коментарий тоже не проблема. Единственное что, не будет контроля количества передаваемых параметров. Но и это можно решить
  • Who is online

    Users browsing this forum: Semrush [Bot] and 4 guests