Где найти документацию?:)

Тема в разделе "WASM.ELECTRONICS", создана пользователем ubil, 7 ноя 2004.

  1. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    В-общем, я хочу потренероваться в написании драйвера для pci устройства, например, для звуковой карточки как у меня стоит (sb 128). И я столкнулся с такой проблемой, что не могу найти документацию по программированию ее на низком уровне... На сайте creative.com вроде не нашел... Может поскажете чего?:)
     
  2. Narkomanius

    Narkomanius New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2003
    Сообщения:
    144
    бери дрова от линукса. я сам так делал.

    а креативу.ком надо лопату в задницу потому что они мне как пользователю их железа не выслали документацию даже в электронном виде. а обязаны.
     
  3. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    ... А получить документацию в чистом виде никак нельзя? Без выковыривания ее из исходников дров для Линукса... Она же точно должна где-то быть... Это же, вроде, не "платная" информация вроде сосканенной the windows 2000 device driver book, которую нигде не найдешь...

    Насчет того, что не выслали... А я по-прежнему уже 2-ые сутки наивно жду что они пришлют:)
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Если я не ошибаюсь, звуковуха о которой идёт речь называется Ensonic Soundscape (возможно 1373). Когда PCI чипы Ensonic только появились, по ним было много инфы (в основном рекламы, конечно) - может быть искать лучше с этой стороны. Вообще SB 128 - это фикция, нужно смотреть model number, инфу на чипе..

    Вообще Narkomanius прав, зачастую единственная дока - сорцы линукса :dntknw:
     
  5. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    Мне, вообще-то это надо чтобы потренероваться перед написанием драйвера для другого девайса, по которому все доки есть, только вот самого девайса под рукой нет...

    Ладно, если что - на Спикере потренеруюсь:)
     
  6. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    Подскажите кто-нибудь, плиз, как в MS Visual Studio добавлять ассемблерные вставки. Странно, почему-то asm {...} и, например, asm push al не работают. Во втором случае компилятор не знает что такое push:)
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Так
    Код (Text):
    1.    __asm
    2.    {
    3.      push  OFFSET _except_handler
    4.      push  DWORD PTR fs:[0]                 // address of next ERR structure
    5.      mov   fs:[0], esp                      // give FS:[0] the ERR address just made
    6.  
    7.      mov   seh.SafeEip, OFFSET SafePlace
    8.      mov   seh.PrevEsp, esp
    9.      mov   seh.PrevEbp, ebp
    10.    }


    или так
    Код (Text):
    1.    __asm _emit 0xCC;


    или так
    Код (Text):
    1.    __asm push eax;
     
  8. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia




    А где push al вообще работают?
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    В 8-ми битных процах видимо.. :)
     
  10. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    А, да... Я загнул что-то:) И вправду не ассемблируется...

    Видно давно на ассемлере не программировал... Последний раз это было 0.5 года назад, и то под какие-то PIC и МК процессоры.
     
  11. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    Asterix

    Кстати, а что там значат seh.SafeEip & seh.PrevEsp?
     
  12. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    Тут я начал разбираться со встроенным ассемблером в visual studio и обнаружил некоторое неудобство:



    #include "stdafx.h"

    #include "iostream.h"



    int main(int argc, char* argv[])

    {

    int *px, x =5;

    px=&x;

    printf("Hello World!\n");

    __asm

    {

    push esi;

    push edi;

    push eax;

    mov esi, px; // Эта строка:)

    // mov eax, esi;

    push esi;

    pop eax;

    mov edi, eax;

    cld;

    lodsd;

    inc eax;

    stosd;

    pop eax;

    pop edi;

    pop esi;

    };

    cout << x << "\n";

    cin >> x;

    return 0;

    }



    Эта программа компилируется и работает. Но если в помеченной строке написать сразу mov offset x;, то программа компилироваться не будет. Разве что если х определить вне main... Кто-нибудь может мне объяснить, почему так?
     
  13. Arvensis

    Arvensis New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2004
    Сообщения:
    72
    Адрес:
    Russia
    Потому что x - локальная переменная и адрес ее выглядит так: ebp+x<sub>offset</sub>. А опкода mov esi,ebp+imm не существует
     
  14. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Код (Text):
    1.  
    2. #include <iostream>
    3. using namespace std;
    4.  
    5. int main()
    6. {
    7.     int x = 5;
    8.     printf("Hello World!\n");
    9.  
    10.     __asm
    11.     {
    12.         lea  eax,x
    13.         inc  dword ptr[eax]
    14.     }
    15.        
    16.     cout << x << "\n";
    17. }
    18.  
     
  15. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    ubil

    > Кстати, а что там значат seh.SafeEip & seh.PrevEsp?



    Члены структуры
    Код (Text):
    1. typedef struct _SEH {
    2.    DWORD   SafeEip;     // The offset where it's safe to continue execution
    3.    DWORD   PrevEsp;     // The previous value of esp
    4.    DWORD   PrevEbp;     // The previous value of ebp
    5. } SEH;
    6.  
    7. SEH      seh;
     
  16. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    Ну, спасибо всем кто ответил, все разрулили:)

    Такой "огромный" код у меня получился в процессе выяснения почему он не хотел компилироваться...

    Но, конечно, lea хорошая команда, надо ее добавить в свой командный запас:)