|
|
| Посл.отвђт | Сообщен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; |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.107 |