Самая быстрая ОСь для десктопа сегодня?

Тема в разделе "WASM.HEAP", создана пользователем NeuronViking, 7 мар 2011.

Статус темы:
Закрыта.
  1. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Вариант, не думал об этом.
    Да, забыл написать об этом. Но подставляемые функции, тоже призваны сократить кол-во макроподстановок.
    Раньше в программный код втыкали макрос MAX(a,b), что эквивалентно вставке кода для вычисления максимального из двух дисел. У подставляемых функций такой же принцип, функция не вызывается инструкцией call, а просто компилятор подставляет её тело в место вызова.
    При макросе происходит подстановка в исходном коде, а при inline функциях в машинном коде.

    Я курсе на втором писал такую с использованием ассемблера. Долго провозился, потом получилось, но как-то радости особой не испытал.
    Может какая-то свежая идея?
    Rel
    Кстати не замечаете, что мы в любой теме находим друг друга:) и все в конечном счете сводится к сишняку:)
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    скорее для тех моментов, когда приоритетна скорость исполнения, а не размер кода... инлайн функция как раз уступает макросу или шаблону... как раз в плане строгой типизации...

    ассемблер тут не при чем... на с++ без использования препроцессора... это совсем не сложно...
     
  3. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Rel
    Ну у меня только такая идея(для Линукс). Прочитав документацию узнать какой системный вызов выводит буфер на консоль. В eax пихнуть номер системного вызова, в другие регистры пихнуть адрес буфера, может ещё какие параметры вызов требует... И прерывание int 80h.
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    будь проще, что тебе мешает вызвать printf из libc? не нужно искать номер системного вызова и не требует использования асм-вставок...
    вот пример решения на винде:
    Код (Text):
    1. extern "C" int __stdcall MessageBoxA(unsigned int, const char*, const char*, unsigned int);
    2.  
    3. int main()
    4. {
    5.     MessageBoxA(0, "Hello World!", "Hello world", 0);
    6.     return 0;
    7. }
    препроцессор вроде не используется))
     
  5. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Rel
    Прикольно. Проверил на Линухе под виртуалкой, тоже работает эта фишка. "C" это указание компоновщику.
    Код (Text):
    1. extern "C" int printf(...);
    2. int main(int argc, char** argv)
    3. {
    4. printf("Include hack\n");    
    5.     return 0;
    6. }
     
Статус темы:
Закрыта.