![]() |
|
|
![]()
|
|
| Daigotsu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.2.2012 Репутация: нет Всего: нет |
День добрый!
Проблема: как правильно делать inline asm на qt-с++, и как настроить дебаг(что бы была возможность идти по шагам по коду и по asm одновременно, либо хотя бы по отдельности), и как сдлеать автоматическую генерацию *.s файла? Сел за Qt, так как нужно по учёбе сделать пару лабораторных на с++ с inline asm, да ещё что бы и gui был. Использую gnu/linux (arch), QtCreator 2.4, qt 4.8. Разобрался с использованием intel-синтаксиса, но как заставить всё работать - не знаю: вот пример на коленке: { я работаю и пишу на javaEE, js и тд, и с++ честно практически не знаю и не кодил на нём, хотя и asm по учёбе знаю}
Все выходит с ошибкой (.text.startup+0x5a):-1: error: undefined reference to `i' --- Потом, как включить нормальный дебаггер? А то я вижу только asm код(он мне тоже нужен) но вкупе с нормальным листингом и желательно параллельно. -- Как сделать создание файла *.s автоматически, т.е. что бы запускать с ключём g++ -s ? Спасибо! |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
нужно же как минимум знать gcc-inline-assembler. попробуй почитай ;)
Добавлено через 4 минуты и 29 секунд
проект обозначь как отладочный. |
|||
|
||||
| Daigotsu |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.2.2012 Репутация: нет Всего: нет |
Это наверное первая ссылка которую я открыл для себя когда начал разбираться. с at&t синт. всё ок! вот этот пример работает на ура:
Но мне то нужен intel syntax! и вот с ним такой пример не проходит.
спасибо, но что то никак он не желает показать что мне нужно. в вкладке projects - выставил edit build configuration в "Qt 4.8 ....(Debug)" потом перехожу во вкладку дебаг - нажимаю f5 - в итоге даже на breakpoint не останавливается. А если жму паузу - переходит в асм вид. блин. Это сообщение отредактировал(а) Daigotsu - 2.2.2012, 22:37 |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
никогда не слышал чтоб gcc-inline-assembler записывался интеловским синтаксисом %) возможно, это просто невозможно... используй AT&T ситаксис. |
|||
|
||||
| Daigotsu |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.2.2012 Репутация: нет Всего: нет |
не, это можно, конечно g++ -masm=intel и будет счастье. тем более без переменной i :
(из первого сообщения) всё успешно компилится. примеры я находил на просторах сети, но не нашёл как же с переменными обращаться. Это сообщение отредактировал(а) Daigotsu - 2.2.2012, 23:11 |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
ссылку же дал. хоть раз уже прочти что-нибудь ;) |
|||
|
||||
| Daigotsu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.2.2012 Репутация: нет Всего: нет |
мммм... Да я прочитал про gcc'шный асм . уже и вроде с ним разобрался. НО я всё же хочу прикрутить intel-syntax. там только сравнение их. но не использование.
и вопрос про дебаггер открыт, правильно я сделал? |
|||
|
||||
| Sahab |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 1.9.2009 Репутация: 2 Всего: 3 |
полную пересборку проекта делал? в pro-файле в конфиг не указано release? Во вкладке Проекты->Настройки сборки->Этапы сборки (qmake) -> Конфигурация сборки - Отладка(Debug) стоит? Добавлено через 1 минуту и 22 секунды Да... И желательно убрать галочку "Запускать в терминале" в Настройках запуска. |
|||
|
||||
| Daigotsu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.2.2012 Репутация: нет Всего: нет |
Спасибо, Sahab. вроде всё получилось.
А насчёт asm - выучил at&t синтаксис и горя не знаю =) единственное что раздражает чуток - это полное невзаимодействие qtcreator с __asm__ вставкой. Он ее не хочет нормально выравнивать по ctrl+I , да и переменные которые упоминаются во вставке - вся равно для него являются неиспользуемыми и подчёркиваются. Но это мелочи, да. |
|||
|
||||
| Sahab |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 1.9.2009 Репутация: 2 Всего: 3 |
Он еще и из c++11 не все поддерживает - регулярно шлю фидбеки... но пока наилучшая IDE на мой взгляд (имхо, не холивара ради). |
|||
|
||||
| Daigotsu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.2.2012 Репутация: нет Всего: нет |
Ну хорошо, но подскажите, как мне сделать такую простую вещь - пишу метод в хедере - в описании класса автоматом он не появляется и остаётся вписывать его туда руками. Может есть хоткей какой особый для этого? Потом, в хедере изменил тип метода - НОЛЬ реакции и никаких подчёркиваний. пф. так же если хочу изменить аргументы в методе. КАК такие простые вещи реализовать в этой ide? В том же eclipse - это само собой разумеется. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
В QtCreator существуют следующие помощники для создания методов:
1. В дизайнере - "перейти к слоту", в заголовке появляется объявление слота, и в исходнике - его заготовка При переименовании компонента нужно в ручную переименовывать слот (или воспользоваться 2) 2. Переименовние метода, поля, класса, локальной переменной и т.д. - Ctrl-Shift-R. Пользоваться внимательно: иногда переименовывает неправильно (места где будут переименования показываются в окне поиска) 3. Переопределение виртуального метода в производном классе. Нужно знать возвращаемое значение и секцию (public/protected) - по этому поводу подсказок не будет. Ввести в нужной секции возвращаемое значение и первые буквы метода, Ctrl-Enter - будет подсказка по методам, начинающимся также. При длинном названии из нескольких слов - можно вводить только заглавные буквы. Выбираете вариант - вставляется название и скобки без аргументов. нажимаете Ctrl-Enter, стоя после открывающейся скобки - появляются подсказки по аргументам. Аналогично вводите заготовку метода в исходинике - но там ещё нужно вводить имя класса. Также есть подсказки при вызове методов, в том числе подсказки для сигналов и слотов в вызове connect() |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |