IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Локальная переменная в Pas, доступ к ней
Local
сообщение 12.05.2004 16:45
Сообщение #1


Гость






Привет!!


Procedure Pr(Str : String);
 begin
    Str:=Str+'$';
   asm
      mov ax,seg(@Data)
      mov ds,ax
      xor ax,ax      
      mov ah,9
      mov dx,offset Str
      int 21h
   end;
 end;
BEGIN
Pr('Hello');
 asm
   mov ah,0
   int 16h
 end;
End;


Вот объясните почему Я промахиваюсь при вызове локальной перменной в
процедуре с параметрами sad.gif
заранее спасибо
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Shadow
сообщение 13.05.2004 18:59
Сообщение #2


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


Здоровеньки!!!
--------------------------------------
почитал Ваш горячий спор
и вот решил выдать инфу насчет оптимизации программы на ASM под
семейство микропроцессоров P6(Pentium Pro II/III)
учитывая особенности ковейера данных процессора команда выбирается
на конвейер устройством выборки команд, которое помещает их в устройство декодирования , состоящее из трех паралельно работающих декодеров 2а простых
1 сложныхю..
Декодеры преобразуют команды микропроцессора в микрооперации
представляющие собой примитивные команды которые выполняютя 5-ю работающими
паралельными исполнительными устройствами микропроцессора .... ну и так далее
.....
Для достижения наибольшей производительности работы декодеров необходимо чтобы на их входы поступали команды декодируемые 6 микрооперациями

-------------
некоторые команды декодируются 1 микрооперацией
а некоторые >4
-------------
в последовательности 4+1+1
==========================================
ню дак вот smile.gif расширенные регистры рассматиривать не будем там для MMX XMM технологии
r8,r16,r32 операндв регистре байт слово 2слово
m8,m16,m32 память
i8,i16,i32 непосредственный операнд
a8,a16,a32 отности операнд смещение в сегменте

------------------------------------------
команда
MOV |со всеми сегментами|,m16   ->    4 мкп  
MOV |m16|,ds fs ss cs gs es     ->    3 мкп
MOV m8,r8  ->    2
MOV rm16,es fs ss               ->    1
MOV rm16/32,i16/32              ->    1
-------------------------------------------
POP ds fs ss                    ->    4
POP m16/32                      ->    4
POP r16/32                      ->    2
-------------------------------------------
PUSH cs gs es fs ss             ->    >4
-------------------------------------------

так что MOV и для современных компов работает быстрее

возможно Я и ошибаюсь может есть новая технология, есть еще например
предсказания когда процессор анализ код и на основе этого предсказывает след команду если предсказать не удалось то идет момент синхронизации - может не точно

ню Я тут не полность привел

и вообще чем меньше команд тем медленнее получается это верно для
определенного размера программы у меня даже пример где-то есть


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.06.2025 20:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"