Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2009, 04:35   #1
rand8154
Пользователь
 
Регистрация: 20.10.2009
Сообщений: 18
По умолчанию команда addswl, linux, gcc

В тасме я делаю:
mov eax, dword ptr dx
add eax, dword ptr dx
(или как то там, давно не проверял)

в gcc:
movswl %%dx, %%eax // работает
addswl %%dx, %%eax //не работает

Мне нужно суммировать! Варианты "используй еще один регистр" не предлагать.
Заранее благодарен!
архикриптокодоквазинаноультракванто вый генератор
rand8154 вне форума Ответить с цитированием
Старый 20.10.2009, 10:28   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Видимо add eax,eax тоже не то ?
а если тогда так ?
Код:
movsx edx,dx
add eax,edx
Или еще можно складывать ax и dx, а потом если было переполнение увеличить старшую часть eax на единичку, но это как-то некрасиво выходит.
Код:
add ax,dx
bswap eax
adc ah,0
adc al,0
bswap eax
PS: С AT&T синтаксисом знаком не очень.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 20.10.2009 в 10:59.
Goodwin98 вне форума Ответить с цитированием
Старый 20.10.2009, 20:26   #3
rand8154
Пользователь
 
Регистрация: 20.10.2009
Сообщений: 18
По умолчанию

[QUOTE=Goodwin98;368550]Видимо add eax,eax тоже не то ?
а если тогда так ?
Код:
movsx edx,dx
add eax,edx
Вообще то суть в том, что в старшей части edx нужные данные и их затирать нельзя. Но все равно спасибо за внимание.
P.S. В АТ источник и приемник наоборот пишутся.
P.S.P.S. ОООчеть рекомендую ознакомиться с АТ. Замена критического места ассемблерной вставкой, и прога работает в 50 раз быстрее.
архикриптокодоквазинаноультракванто вый генератор
rand8154 вне форума Ответить с цитированием
Старый 21.10.2009, 10:12   #4
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

тасм такое не осилит
Код:
mov eax, dword ptr dx
add eax, dword ptr dx
и 80х86 тоже
что мешает использовать стек?
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 21.10.2009, 11:01   #5
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Цитата:
тасм такое не осилит
он хотел написать movzx eax,dx
Цитата:
что мешает использовать стек?
и правдо
Код:
db 66h
push 0
push dx
add eax,[esp]
add esp,8
Цитата:
P.S.P.S. ОООчеть рекомендую ознакомиться с АТ. Замена критического места ассемблерной вставкой, и прога работает в 50 раз быстрее.
Спасибо, но я лучше ic++ какой-нибудь с интел синтаксисом
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 21.10.2009 в 11:17.
Goodwin98 вне форума Ответить с цитированием
Старый 21.10.2009, 14:32   #6
rand8154
Пользователь
 
Регистрация: 20.10.2009
Сообщений: 18
По умолчанию

Цитата:
Сообщение от airyashov Посмотреть сообщение
тасм такое не осилит
Код:
mov eax, dword ptr dx
add eax, dword ptr dx
и 80х86 тоже
что мешает использовать стек?
Выполнение комманд конвеерное, использование стека - пробка посреди шоссе - убивает всю скорость.
архикриптокодоквазинаноультракванто вый генератор
rand8154 вне форума Ответить с цитированием
Старый 21.10.2009, 14:44   #7
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Посмотрел заранее на скорость выполнения вариантов с bswap и со стеком.
На первый раз в цикле медленне второй вариант, но остальные нормально.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 21.10.2009, 15:43   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от rand8154
В тасме я делаю:
mov eax, dword ptr dx
add eax, dword ptr dx
(или как то там, давно не проверял)
Не силён в Ассемблере, но что если так:
Код:
xor eax, eax
mov ax, dx
shl eax, 1
Т.е. в eax должно оказаться удвоенное dx, верно?
Arigato вне форума Ответить с цитированием
Старый 21.10.2009, 20:54   #9
rand8154
Пользователь
 
Регистрация: 20.10.2009
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Не силён в Ассемблере, но что если так:
Код:
xor eax, eax
mov ax, dx
shl eax, 1
Т.е. в eax должно оказаться удвоенное dx, верно?
Этот случай - идейно-показательный. Комманда мув поставлена в качестве примера работающей. В реальной жизни нужна только вторая строка(когда в еаксе уже чтото есть и нужно приплюсовать.)
архикриптокодоквазинаноультракванто вый генератор
rand8154 вне форума Ответить с цитированием
Старый 21.10.2009, 21:02   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Т.е. надо к eax прибавить dx? Числа со знаком или без?
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с gcc d9m0n Qt и кроссплатформенное программирование С/С++ 6 04.09.2009 02:30
вопрос по GCC XAOC-forever Qt и кроссплатформенное программирование С/С++ 7 07.04.2009 19:17
Linux на VMware....... WinXP <-> Linux DMUTPUU Операционные системы общие вопросы 1 24.09.2008 12:03
inline asm в gcc drRobert Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 23.08.2008 10:26
Какой тип с/c++ больше всего напоминает компилятор gcc и g++ Который используется в UNIX-подобных система Иллидан Свободное общение 4 28.03.2008 02:29