Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Результаты опроса: Мне милее синтаксис:
at&t 0 0%
intel 17 80.95%
Одинаково / не знал вобще о разнице (пишу в тред детали) 4 19.05%
Голосовавшие: 21. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы
Старый 19.08.2012, 22:55   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Синтаксис: at&t vs intel

Какой синтаксис для asm-вставки в плюсы тебе нравится больше?

Примеры at&t (не дают полного представления об особенностях синтаксиса) [GCC]:
xorl %eax,%eax
movb $0x0b,%al
int $0x80
Примеры intel [Visual]:
add edi,2
mov eax,edi
mov eax,-1
Дополнительный вопрос в тред: существуют ли конвертеры между синтаксисами?

ОПРОС ОТКРЫТЫЙ
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 19.08.2012, 23:41   #2
Platon
 
Сообщений: n/a
Ответ: Синтаксис: at&t vs intel

Какой синтаксис для asm-вставки в плюсы тебе нравится больше?
А зачем вообще в крестах асм использовать?

ЗЫ
проголосовал за intel. Выглядит приятнее конечно, но, если не ошибаюсь, у at&t более навороченый синтаксис.
 
Ответить с цитированием
Старый 20.08.2012, 00:21   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Синтаксис: at&t vs intel

Сообщение от Platon Посмотреть сообщение
А зачем вообще в крестах асм использовать?
Скажу про себя: оптимизация сверхкритичных участков кода.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 20.08.2012, 00:39   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Синтаксис: at&t vs intel


раз уж такая тема, Импер, расскажи, какие приходилось оптимизировать асмом места? в смысле, если ты работал над чем-то типичным для игр/других реалтайм приложений, и нашёл интересные оптимизации для вещей типа куллинга/поиска объектов/чего-то ещё интересного, было бы клёво узнать какие-нибудь оптимизации.
если оптимизировал что-то очень специфичное - тогда наверное нет.
я за всю жизнь юзал только какой-то асмовый sincos, чтобы считать разом sin и cos, и то для SSE данных он малополезен.
(Offline)
 
Ответить с цитированием
Старый 20.08.2012, 01:06   #5
jimon
 
Сообщений: n/a
Ответ: Синтаксис: at&t vs intel

Сообщение от Mr_F_ Посмотреть сообщение

и то для SSE данных он малополезен.
скорость интринсиков может отличатся от прямых асм команд (потому что компилятор-дебил, да)
 
Ответить с цитированием
Старый 20.08.2012, 17:11   #6
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Синтаксис: at&t vs intel

я за всю жизнь юзал только какой-то асмовый sincos, чтобы считать разом sin и cos
та же фигня
(Offline)
 
Ответить с цитированием
Старый 20.08.2012, 20:55   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Синтаксис: at&t vs intel

Сообщение от Mr_F_ Посмотреть сообщение

если ты работал над чем-то типичным для игр/других реалтайм приложений, и нашёл интересные оптимизации для вещей типа куллинга/поиска объектов/чего-то ещё интересного, было бы клёво узнать какие-нибудь оптимизации.
если оптимизировал что-то очень специфичное - тогда наверное нет.
2-ое
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (20.08.2012)
Старый 23.08.2012, 18:20   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Синтаксис: at&t vs intel

Всё-таки отыскал на вики статьи:
at&t
Intel

Существуют ли конвертеры между синтаксисами?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 01.04.2014, 20:32   #9
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Синтаксис: at&t vs intel

В gcc/g++ можно использовать оба синтаксиса, переключая ключом -masm=intel|att.
Оба синтаксиса в gcc сохраняют контроль над отношением регистров и локальных переменных (входящие/выходящие параметры), в msvs насколько я знаю такого нет.
Меняется сразу и инлайн и выходной асм код (который по ключу -S можно вывести).

Более того мы можем указать компилятору не оптимизировать вставку:
asm volatile ( ... );
asm volatile ( ... );
Тогда они будут выполняться друг за другом, без всяких перестановок.

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

Я предпочитаю intel, и где можно переключаю на него, хотя некоторые программы (дебагеры, отладчики памяти и прочие) дают инфу в att полюбому, так что на практике приходится работать сразу с двумя синтаксисами.

В инлайн вставках лучше использовать управляемые как гцц конструкции где можно указать входящие/выходящие регистры.
Если же создаешь объектный файл целиком в асме то лучше взять какойнибудь fasm и писать в нём - там синтаксис лучше всего отшлифован.

Конверторы не встречал, но теоретически где то во вселенной они могут существовать.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (01.04.2014)
Старый 01.04.2014, 21:33   #10
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Синтаксис: at&t vs intel

Сообщение от Samodelkin Посмотреть сообщение
Точно также можно поступить с переменными обозная их квалификатором volatile, хотя по идее компилятор должен и без него определять как используется переменная, volatile нужен скорей в тех случаях когда переменная может измениться внешнем для приложения образом, например в случае мапирования портов или внешних устройств.
Или если переменная играет роль флага при многопоточном взаимодействии. Что, вообще-то, не очень чисто (для этого можно использовать объекты ядра со всеми вытекающими минусами и плюсами), но может быть оправдано.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 01.04.2014, 22:34   #11
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Синтаксис: at&t vs intel

Сообщение от impersonalis Посмотреть сообщение
Или если переменная играет роль флага при многопоточном взаимодействии. Что, вообще-то, не очень чисто (для этого можно использовать объекты ядра со всеми вытекающими минусами и плюсами), но может быть оправдано.
Только если гарантируется атомарность операции. Обычно volatile для мп считается не верным решением, потому что атомарность не прописана в стандарте, а является техособенностью конкретной платформы/компилятора.
(Offline)
 
Ответить с цитированием
Старый 01.04.2014, 23:24   #12
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Синтаксис: at&t vs intel

Для некоторых решений атомарность не принципиальна. Например: не блокируемый цикл, условием выхода из которого является гарантированно однократная смена состояния флага. При этом цикл не обязательно спинблок в чистом виде (например, есть полезная нагрузка с требованием постоянного выполнения). Данный подход может быть оправдан при выполнении цикла на гарантированно отдельном ядре (а не за счёт разделения ресурсов одного ядра). Т.о. мы уверены, что спинблок не повлияет критично на поток, занимающийся управлением флагом.
Если же это спинблок, то требования к быстродействию (нет времени на переключение в режим ядра и адекватный сон) и/или малая вероятность захвата флага другим синхронизированным потоком, могут опять-таки оправдать использование обычного флага с volatile как примитива синхронизации. Правда, для последнего существуют (как обёртка) критические секции, которые (в отличие от семафоров) как раз первично* в режиме пользователя работают. Даже готовый метод есть - InitializeCriticalSectionAndSpinCount, и не менее удобный TryEnterCriticalSection (который на мьютексах делается костылём в виде ожидания в 0 мс).

А чо-чо в новом стандарте, вроде, какие-то подвижки по поводу стандартизации работы с мп были, не?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 01.04.2014, 23:52   #13
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Синтаксис: at&t vs intel

__
Сообщение от impersonalis Посмотреть сообщение
А чо-чо в новом стандарте, вроде, какие-то подвижки по поводу стандартизации работы с мп были, не?
The volatile keyword in C++11 ISO Standard code is to be used only for hardware access; do not use it for inter-thread communication. For inter-thread communication, use mechanisms such as std::atomic<T> from the C++ Standard Template Library.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:37.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com