|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.06.2015, 11:00 | #1 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Как работает XCHG (изнутри)?
ASM-вставка на Delphi XE5. Есть 2 варианта кода:
#1 Код:
Код:
Подскажите, почему так происходит? |
05.06.2015, 11:25 | #2 |
Пользователь
Регистрация: 12.05.2011
Сообщений: 57
|
А замерам производительности можно доверять? Без тестирования, рассуждая только теоретически, я бы тоже высказался в пользу #1.
P. S. Еще вспомнилось, что команда XCHG использует какую-то дополнительную блокировку, вроде бы даже аппаратную, дабы между чтением из памяти и записью в память никто не встрял. Возможно, в этом дело? |
05.06.2015, 12:13 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Там при регистр-память тактов не меньше 15 или 18 (точно не помню)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
05.06.2015, 12:20 | #4 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Не знаю. Наверное. Меня профессионалом в программировании только этот форум и считает (люблю его за это нЯшка)
Код:
Цитата:
|
|
05.06.2015, 12:33 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
05.06.2015, 13:02 | #6 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Так стек же - это тоже память
Даже эта хрень работает быстрее Код:
Цитата:
Последний раз редактировалось Sibedir; 05.06.2015 в 13:07. |
|
05.06.2015, 13:10 | #7 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,799
|
Для ассемблерных тестов у GetTickCount слишком маленькое разрешение. Только QueryPerformanceCounter, только хардкор!
Блокировку. Ссылка где-то в доке Intel или AMD, видимо. Даже если второй вариант и с QueryPerformanceCounter будет быстрее, на деле две ассемблерные вставки делают разное (с точки зрения ассемблера): c XCHG -- более-менее согласованный обмен, а с двумя MOV -- ничего не гарантирующий, пригодный только для однопоточных программ. |
05.06.2015, 13:19 | #8 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
Цитата:
Последний раз редактировалось Sibedir; 05.06.2015 в 13:22. |
||
05.06.2015, 14:43 | #9 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
в мануале ж все есть.
при работе с памятью на многоядерном проце, XCHG влючает внуренний механизм синхронизации, который обеспечивает ядру, на котором произошел XCHG экслюзивный доступ к требуемой области памяти. ну, как известно, любая операция требующая синхронизации - это безбожно медленная операция. зы. можешь еще с MOVNTI [eax], ebx сравнить. Последний раз редактировалось f.hump; 05.06.2015 в 14:50. |
06.06.2015, 12:15 | #10 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Ага, есть Я только здесь нашел: x86 Architecture.
А вот здесь x86 Instructions, как это ни странно, об это ни слова. Вотжиш люди. Цитата:
Последний раз редактировалось Sibedir; 06.06.2015 в 12:28. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание игры - взгляд изнутри (дневник разработки и учебное пособие) | Гром | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 97 | 15.01.2017 14:31 |
5 колонна разрушит Россию изнутри | challengerr | Свободное общение | 22 | 11.06.2014 13:48 |
дельфи изнутри. | ромик0 | Помощь студентам | 8 | 16.01.2012 13:36 |
статья - Может-ли ПО работать быстрее или взгляд изнутри | Pblog | Обсуждение статей | 0 | 27.02.2011 23:10 |
[Вопросы]Работа с процессами. Процессы изнутри | Человек_Борща | Общие вопросы Delphi | 2 | 03.04.2010 18:37 |