· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ELECTRONICS —› Где найти документацию?:)

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Ноя 7, 2004 13:12:11

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


Дата: Ноя 7, 2004 19:01:32

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


Дата: Ноя 7, 2004 19:36:53

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


Дата: Ноя 8, 2004 14:07:46

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


Дата: Ноя 8, 2004 14:13:38

Мне, вообще-то это надо чтобы потренероваться перед написанием драйвера для другого девайса, по которому все доки есть, только вот самого девайса под рукой нет...
Ладно, если что - на Спикере потренеруюсь:)


Дата: Ноя 11, 2004 23:54:08

Подскажите кто-нибудь, плиз, как в MS Visual Studio добавлять ассемблерные вставки. Странно, почему-то asm {...} и, например, asm push al не работают. Во втором случае компилятор не знает что такое push:)


Дата: Ноя 12, 2004 00:47:32

Так
   __asm
   {
     push  OFFSET _except_handler
     push  DWORD PTR fs:[0]                 // address of next ERR structure
     mov   fs:[0], esp                      // give FS:[0] the ERR address just made

     mov   seh.SafeEip, OFFSET SafePlace
     mov   seh.PrevEsp, esp
     mov   seh.PrevEbp, ebp
   }

или так
   __asm _emit 0xCC;

или так
   __asm push eax;


Дата: Ноя 12, 2004 03:00:55

„и, например, asm push al не работают“

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


Дата: Ноя 12, 2004 03:44:13

В 8-ми битных процах видимо.. :-)


Дата: Ноя 12, 2004 11:30:18

А, да... Я загнул что-то:) И вправду не ассемблируется...
Видно давно на ассемлере не программировал... Последний раз это было 0.5 года назад, и то под какие-то PIC и МК процессоры.


Дата: Ноя 12, 2004 11:35:55

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


Дата: Ноя 17, 2004 02:06:38

Тут я начал разбираться со встроенным ассемблером в 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... Кто-нибудь может мне объяснить, почему так?


Дата: Ноя 17, 2004 02:59:52

Потому что x - локальная переменная и адрес ее выглядит так: ebp+xoffset. А опкода mov esi,ebp+imm не существует


Дата: Ноя 17, 2004 04:12:23

#include <iostream>
using namespace std;

int main()
{
	int x = 5;
	printf("Hello World!\n");

	__asm
	{
		lea  eax,x
		inc  dword ptr[eax]
	}
		
	cout << x << "\n";
} 


Дата: Ноя 17, 2004 07:59:55

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

Члены структуры
typedef struct _SEH {
   DWORD   SafeEip;     // The offset where it's safe to continue execution 
   DWORD   PrevEsp;     // The previous value of esp 
   DWORD   PrevEbp;     // The previous value of ebp 
} SEH;

SEH      seh;

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.107