Russian Qt Forum
Июня 08, 2025, 09:14
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
inline assembler
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: inline assembler (Прочитано 4336 раз)
lem
Гость
inline assembler
«
:
Августа 13, 2011, 16:11 »
здравствуйте, уважаемые программисты
я начинаю разбираться с inline assembler в qt и на первой же тестовой программе столкнулся с проблемой:
код:
Цитировать
void MainWindow::on_pushButton_clicked()
{
int x;
asm("mov %[var],5" : [var]"=r"(x));
QMessageBox box;
box.setText(QString::number(x));
box.exec();
}
по идее после нажатия кнопки должен появиться messagebox с текстом "5" , но вместо этого происходит неожиданное завершение программы с кодом "0". объясните пожалуйста в чем причина происходящего.
Записан
merke
Гость
Re: inline assembler
«
Ответ #1 :
Августа 13, 2011, 19:40 »
Код
ASM
asm
(
"mov %1,%0"
:
"=r"
(
x
)
:
"r"
(
10
)
)
;
«
Последнее редактирование: Августа 13, 2011, 19:55 от Александр
»
Записан
lem
Гость
Re: inline assembler
«
Ответ #2 :
Августа 13, 2011, 20:46 »
спасибо, сработало. но код:
int x;
asm("mov %1,5" : "=r"(x));
QMessageBox box;
box.setText(QString::number(x));
box.exec();
не сработал. объясни плз в чем причина
Записан
LisandreL
Птица говорун
Offline
Сообщений: 984
Надо улыбаться
Re: inline assembler
«
Ответ #3 :
Августа 13, 2011, 22:21 »
Цитата: lem от Августа 13, 2011, 20:46
не сработал. объясни плз в чем причина
Причина в том, что синтаксис ассемблера тут ожидается AT&T'шный, а не видимо привычный вам Intel'овский.
Код
C++ (Qt)
asm
(
"mov $10,%0"
:
"=r"
(
x
)
)
;
Т.е.:
1) порядок операторов обратный к тому, который вы ожидаете.
2) Числа предваряются знаком доллара.
Записан
merke
Гость
Re: inline assembler
«
Ответ #4 :
Августа 14, 2011, 06:50 »
http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html
Записан
lem
Гость
Re: inline assembler
«
Ответ #5 :
Августа 14, 2011, 10:46 »
спасибо большое. если Вам не сложно, дайте пожалуйста ссылку на литературу по поводу использование api в ассемблере (все что я нашел это ttp://asm.sourceforge.net/syscall.html).
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...