OF, 31 для QNX. Как это написать?

Тема в разделе "WASM.BEGINNERS", создана пользователем wasm_user, 8 сен 2009.

  1. wasm_user

    wasm_user New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2009
    Сообщения:
    2
    Помогите написать нечто похожее для QNX C/C++, если это возможно.

    Вот образец на Delphi:

    function GetTSC : Int64; assembler;
    asm
    $0F, $31 { RDTSC: TSC --> EDX:EAX }
    end;
    ......................
    ......................
    ......................
    var
    I64 : Int64;
    begin
    I64 := GetTSC;
    Sleep(100);
    I64 := GetTSC - I64;
    ShowMessage('CPU MHZ: ' + IntToStr(I64 div 100000))
    end;


    КАК НА QNX C/C++ НАПИСАТЬ ПОДОБНУЮ ФУНКЦИЮ GetTSC???
     
  2. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    qnx какое? номер? х86?
    > 6? то там гцц. посмотрите в доке как делать асм вставки в гцц
    < 6? ватком - смотрим соответственно

    ну и всегда можно извратиться

    int
    foo(...)
    char m[] = {
    0xf, 0x31,
    0x8b, 0x4c, 0x24, 4,
    0x89, 0x11,
    0xc3
    };
    long (*tsc)(long* b);
    long a, b;

    (char*)tsc = m;

    a = tsc(&b);

    ..........
    }
     
  3. reversecode

    reversecode Guest

    Публикаций:
    0
    а что в qnx ассемблера нет??? O_o
     
  4. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    есть, конечно. но qnx qnx-у рознь.
     
  5. wasm_user

    wasm_user New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2009
    Сообщения:
    2
    QNX ver 6.3.0 Momentics qcc (*)

    Сам я с ней не знаком. Попросили узнать те, кто в ней работают, но asm не используют.

    Оказалось, что в (*) существует функция ClockCycles, которая и вызывает RDTSC.
    В принципе assembler уже не нужен(для RDTSC), но если у кого-нибудь есть время,
    напишите ассемблерную вставку для возврата 64-разрядного результата в паре регистров(например EDX:EAX). Увы, на работе только 1 компьютер с выходом в интернет,
    и обычно он занят, а печатной документации нет.

    -----------------------------------------------------------------------------------------

    Ну, почему же это извращение?
    Функция ближнего вызова(ret), не удаляющая переданный ей DWORD-параметр(адрес)
    и возвращающая <по-умолчанию> в EAX младшую часть значения TSC, по адресу -
    старшую часть TSC(из EDX).
    Функция состоит из четырёх команд:
    rdtsc ; TSC --> EDX:EAX
    mov ecx, [esp+4]
    mov [ecx], edx
    ret
    находится в сегменте данных и вызывается через указатель на функцию.

    Такое можно и на Паскале написать(вообще на любом языке с поддержкой
    процедурных типов). Правда речь шла о С/C++.
     
  6. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Вообще кто знает? хорошо ли продаются проги под системы реального времени? ( давненько тестил QNX, можно былоб чегонить под неё и написать... )
     
  7. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    wasm_user
    qcc это оболочка вокруг гцц. ин-С-шный асм, те, гццовый. +есть портированый насм. кроме того, раз линкаются ельфы, то можно попробовать использовать любой асм дающий выход объектника в этом формате

    и как это по кнх нет доки?? а справка? а буки? а qdn? и по гцц все есть. гдето читал, что и сорсы они выложили..

    featurelles
    что в кнх плохо, так это цена и неудобный порядок лицензирования, потому лично я предпочитаю п9, которое идет под почти бсд-лиц (есть оговорка, что в какойто момент наследники белов могут отказаться от нее и дальнейшие версии станут платными, но отфоркаться ж ничего не мешает) и внутренняя архитектура/дровостроительство как минимум не хуже. есть и реал, и нереал планировщики, какой вкомпелите

    а как с заказами под qnx (вас ведь охота кнх, а не какойнить всворкс, правда?) - погуглите по доскам|тематическим форумам.