Search found 3943 matches

by Serge
Wed Apr 12, 2006 3:06 pm
Forum: Assembler
Topic: Эффективное программирование в KOLIBRI OS
Replies: 113
Views: 72210

Довольно интересный результат. Как предположение: команды inc и dec меняют не все арифметические флажки поэтому процессор не может заранее определить флажки в команде jnz .l1 и вынужден ждать исполнения последенй команды inc. Процессор максимально может выдавать три инструкции за такт, реально перед...
by Serge
Wed Apr 12, 2006 9:53 am
Forum: Assembler
Topic: Эффективное программирование в KOLIBRI OS
Replies: 113
Views: 72210

Лучше немного изменить код testing: ;собственно сюда можно вставить кусок своего кода xor eax,eax loop_s: xor ecx,ecx ; зачем обнулять есх в цикле, inc ecx ; а потом увеличивать inc eax cmp eax,0xfffffff ; занимает много времени jb loop_s вариант add reg, 1 / inc reg xor eax, eax .l: add eax, 1 ; ил...
by Serge
Tue Apr 11, 2006 8:36 pm
Forum: Sound
Topic: sound, SB, AC97 и другое
Replies: 988
Views: 497097

Иван Поддубный Проблема в том, что порты нужно записывать. А когда речь идет о PCI устройствах, то необходимо обработать прерывание до того как контроллеру прерываний будет послана команда EOI, если этого не сделать то мы сразу получим новое прерывание и система просто не сможет нормально работать....
by Serge
Tue Apr 11, 2006 6:27 pm
Forum: Sound
Topic: sound, SB, AC97 и другое
Replies: 988
Views: 497097

Не надо ничего специально резервировать. Нужен массив куда можно будет записывать адрес пользовательского обработчика прерываний. Номер IRQ - индекс в массиве. Если сделать двумерный массив, можно будет установить несколько обработчиков на один IRQ и вызывать их последовательно. Системный обработчик...
by Serge
Tue Apr 11, 2006 3:58 pm
Forum: Assembler
Topic: Эффективное программирование в KOLIBRI OS
Replies: 113
Views: 72210

А исходный код теста можно посмотреть? И сколько было прогонов ?
by Serge
Mon Apr 10, 2006 9:25 pm
Forum: Assembler
Topic: Эффективное программирование в KOLIBRI OS
Replies: 113
Views: 72210

По поводу скорости исполнения inc и dec я ошибся, но у них есть свои заморочки на P4. В остальном все правильно Разницу в быстродействии можно будет заметить только на очень большом числе команд. Надо хорошо продумать порядок тестирования. Mario79 Я отправил тебе письмо с правилами оптимизаторов. Ес...
by Serge
Mon Apr 10, 2006 9:18 pm
Forum: Sound
Topic: sound, SB, AC97 и другое
Replies: 988
Views: 497097

Можно сделать драйвер в виде отдельной программы, но нужна функция для установки пользовательского обработчика прерывания. Пока такой функции в системе нет
by Serge
Mon Apr 10, 2006 5:15 pm
Forum: Assembler
Topic: Эффективное программирование в KOLIBRI OS
Replies: 113
Views: 72210

Я не думаю что так уж необходимо переписывать код. Просто со времен 8086 многое изменилось и самый маленький код не всегда самый быстрый, скорее наоборот. Я решил подготовить полезные советы для оптимизаторов и скоро пришлю их.

Главная цель оптимизации - экономить время людей, а не машин.
by Serge
Mon Apr 10, 2006 11:15 am
Forum: Assembler
Topic: Эффективное программирование в KOLIBRI OS
Replies: 113
Views: 72210

Маленькое замечание mov eax,8 ... ... ... ;mov eax,4 shr eax,1 ;то же но сдвиги быстрее т.е. получается 8 разделить на 2 Это не факт. На всех суперскалярных процессорах (Р2 - Р4, Атлоны) mov eax,4 будет выполнено раньше чем shr eax,1 потому, что нет ложных взаимозависимостей по регистру еах. И загру...
by Serge
Sat Apr 08, 2006 8:32 am
Forum: Sound
Topic: sound, SB, AC97 и другое
Replies: 988
Views: 497097

Но MMX есть не на всех х86 процах. Например, на старых 486 ноутах это недопустимо, но я говорю про подсистему а не про драйвер. По этому в подсистеме я не буду использовать MMX, по крайней мере пока. Я ориентировался на ММХ потому, что если на компе есть АС97 кодек то и процессор с ММХ тоже есть. П...
by Serge
Fri Mar 31, 2006 1:18 am
Forum: Sound
Topic: sound, SB, AC97 и другое
Replies: 988
Views: 497097

Я готов. У меня есть программный микшер для 16 буферов (без разницы статических или динамических) число буферов можно легко нарастить Как подфункции сделаны ММХ микшеры на 2, 3, 4 потока в 1. ММХ конвертеры моно 44.1 в стерео 44.1, стерео 22.05 в стерео 44.1, моно 22.05 в стерео 44.1 и примитивный р...
by Serge
Wed Mar 29, 2006 10:05 pm
Forum: Sound
Topic: sound, SB, AC97 и другое
Replies: 988
Views: 497097

В АС97 многоканальный звук воспроизводится через один буфер с чередованием сэмплов. Сначала идет 1 канал левый, правый, потом 2 канал, левый правый и т.д. На практике программа создает разные звуковые буфера в разном формате, а драйвер конвертирует их в рабочий формат и микширует в реальном времени.
by Serge
Thu Mar 23, 2006 7:17 pm
Forum: Off-topic
Topic: Еще несколько вопросов
Replies: 25
Views: 18702

0b0rm0t
насколько трудно будет перейти на 64-х битные процессоры?
Для обычных программ большая часть 32 битного кода будет абсолютно совместима.
Пропали команды inc и dec для 8 битных регистров al, bl, cl и т.д. b и несколько редко
используемых команд (aaa, aad, aam, aas, bound, daa, das).
by Serge
Wed Mar 22, 2006 11:16 pm
Forum: Assembler
Topic: Unreal Mode CPU
Replies: 8
Views: 10227

Mario79

Прерывания БИОС могут использовать ES.
by Serge
Tue Mar 21, 2006 10:23 pm
Forum: Assembler
Topic: Unreal Mode CPU
Replies: 8
Views: 10227

Mario79 Вот полная заготовка для ДОС ;;;;;;;;;;;;;;;;;;;;;;; format MZ heap 0 stack 800h entry main:start segment main use16 use16 start: mov ax,_data mov ds, ax mov es, ax xor eax, eax mov ax,ds shl eax, 4 mov bx, gdt add ebx, eax ; ebx - линейный адрес gdt mov word [gdtPtr], 2 * 8 -1 ; предел gdt...