9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
|
||||||
1 | ||||||
VS 2012 Как в Visual Studio 2012 в режиме 64-бит использовать ассемблер?16.05.2014, 13:56. Показов 6827. Ответов 19
Метки нет (Все метки)
как в Visual studio 2012 в режиме 64 -бит использовать ассемблер?
Или есть ли в в функциях C++ ассемблерная инструкция finit (иниациализировать сопроцессор), я в 32 битном режиме писал вот так.
0
|
16.05.2014, 13:56 | |
Ответы с готовыми решениями:
19
Как открыть проект созданный в Visual Studio 2012 в Visual Studio 2008? Как проект на visual studio 2012 открыть на visual studio 2008 Скажите если я напишу программу на C# в MS Visual studio 2012 на framework 3.5 я потом смогу открыть проект моей программы на MS Visual studio 2008 Стоит ли переходить на Visual Studio 2013 Express c Visual Studio 2012 Ultimate |
Ушел с форума
|
|
16.05.2014, 21:34 | 2 |
Сообщение было отмечено korez как решение
Решение
Создать файл .asm, добавить его в проект, скомпилировать через ml64.exe,
объектник подать на вход компоновщику. Можно все это делать через настройки сборки проекта, а можно просто командную строку прописать куда-нибудь в Build Events.
1
|
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
|
|
16.05.2014, 22:31 [ТС] | 3 |
Убежденный, как и куда писать строку не могли бы вы привести пример никогда с таким редактированием не сталкивался.
какой у него листинг, дайте ссылку на мануал или пример.
0
|
Ушел с форума
|
|
16.05.2014, 22:44 | 4 |
Сообщение было отмечено korez как решение
Решение
Кстати, добавлю, пока не забыл: в Visual C++ для многих
асмовских вещей существуют интринсики: Compiler Intrinsics and Assembly Language http://msdn.microsoft.com/en-u... 10%29.aspx Добавлено через 12 минут Здесь посмотрите (с картинками!): Assembly Programming with Visual Studio 2010/2012 http://www.codeproject.com/Art... ual-Studio Ассемблер для Windows используя Visual Studio http://habrahabr.ru/post/111275/
1
|
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
|
|
17.05.2014, 00:02 [ТС] | 5 |
Убежденный, я так понял интринсики это уже написанные библиотечные функции но там по моему нет аналога finit
Добавлено через 31 минуту У меня честно говоря dll проект и так нет вкладки Custom build rules
0
|
Ушел с форума
|
|
17.05.2014, 08:59 | 6 |
korez, а Вы никогда не компилили асмовские проекты
из командной строки (типа ml.exe /c /coff myfile.asm) ? По-моему, самое время научиться
1
|
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
|
|
17.05.2014, 13:33 [ТС] | 7 |
Убежденный, да вы правы, научиться самое время буду пробовать все варианты.
Добавлено через 37 минут проект 64 битный, мне нужно использовать 64 битный масм? Добавлено через 2 часа 8 минут скомпилировал, отдельно получил obj файл, но как мне его привязать в visual studio
0
|
Ушел с форума
|
|
17.05.2014, 14:11 | 8 |
Да. ml64.exe.
Добавьте obj-файл в linker options, в раздел "input" или как там он называется (нет под рукой, чтобы посмотреть).
1
|
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
|
|||||||||||
17.05.2014, 15:30 [ТС] | 9 | ||||||||||
это ассемблерный код, скомпилировал его вот так ml64.exe /с /coff asm_code.asm
MASM : warning A4018:inval Assembling: asm_code.asm но файл скомпилировал в obj файл.
error C3861: 'asm_finit': identifier not found наверное не туда пишу, может скомпилировал не так ассемблерный файл заковыристый вопросец с этим асом вышел.
0
|
Ушел с форума
|
|
17.05.2014, 18:41 | 10 |
А в коде на C++ функция asm_finit как объявлена ?
1
|
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
|
||||||
17.05.2014, 20:30 [ТС] | 11 | |||||
как я и написал вот так
0
|
Ушел с форума
|
||||||
17.05.2014, 20:33 | 12 | |||||
Нет, я имел в виду, что функция asm_finit, чтобы компилятор ее
"переварил", должна быть объявлена. Например, так:
1
|
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
|
|
17.05.2014, 20:57 [ТС] | 13 |
дааааааа. ура ура ура ура все получилось вы мне очень помогли к вашей репутации +50.
(вообще у меня всегда все тормозиттся из-за настроек проекта, а пишу я очень быстро, один раз искал как компилировать длл в нужном формате неделю).
0
|
31 / 17 / 5
Регистрация: 18.07.2013
Сообщений: 220
|
|||||||||||
12.08.2014, 16:06 | 14 | ||||||||||
Кликните здесь для просмотра всего текста
в другом файле Кликните здесь для просмотра всего текста
В регистре EAX оказывается стандартное debug значение 0xCCCCCCCC как правильно передавать и возвращать значение
1
|
Ушел с форума
|
|
12.08.2014, 19:30 | 15 |
В x64 аргументы передаются через RCX, RDX, R8 и R9.
2
|
31 / 17 / 5
Регистрация: 18.07.2013
Сообщений: 220
|
|
13.08.2014, 03:07 | 16 |
А с функцией класса как можно поступить или придётся внутри такой функции повторно вызывать функцию, а это дополнительные расходы на вызов и возврат
1
|
Ушел с форума
|
|
13.08.2014, 09:33 | 17 |
Вызов нестатического метода класса ничем не отличается от вызова
обычной функции, за исключением того, что первым аргументом неявно передается указатель this. На всякий случай отмечу, что это не является частью стандарта и в другом компиляторе может быть сделано по-другому.
1
|
31 / 17 / 5
Регистрация: 18.07.2013
Сообщений: 220
|
|||||||||||
14.08.2014, 12:49 | 18 | ||||||||||
Попытка дать имя функции вида className::func1 в asm файле, мне выдало синтаксическую ошибку. Попытка в классе в объявлении функции написать extern выдало, что ключевые слова линковки не поддерживаются.
Добавлено через 19 часов 43 минуты Вот разобрался в том как получить листинг на ассемблере для класса и ниже пример для простенького класса C:\Users\Archi>"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64 \cl.exe" -c "C:\Users\Archi\Documents\Visual Studio 2012\Projects\CPPConsole2\CP PConsole2\Base.cpp" /Fas Кликните здесь для просмотра всего текста
в папке моих документов нашёл файл s.asm Кликните здесь для просмотра всего текста
Добавлено через 21 минуту Для продолжения эксперимента, удалил из проекта файл Base.cpp и добавил s.asm. В итоге никаких изменений для прочей части проекта. Полагаю данным методом, можно понять какое имя надо дать PROC, чтобы он считался функцией члена класса Добавлено через 6 часов 8 минут Возникли проблемы со static функциями, их линковщик не находит
1
|
Ушел с форума
|
|
14.08.2014, 14:31 | 19 |
0
|
31 / 17 / 5
Регистрация: 18.07.2013
Сообщений: 220
|
|
14.08.2014, 15:04 | 20 |
При возникновении подобных проблем стоит сделать следующее 1. в окне Build Customization Files отметить галочку masm. 2. Почистить проект 3. файл с расширением .asm не должен совпадать по имени (без расширения) с файлом cpp (это, если часть функций нужно писать просто на C++) иначе выйдет два obj файла с одним именем 4. Правой клавишей щёлкнув на файле asm в окне Solution Explorer нужно выбрать в Item Type Microsoft Macro Assembler (это, если вы добавили файл asm до первого шага, то там может стоять другой Item type, означающий не участвовать в компиляции)
Добавлено через 1 минуту Нет, я решил эту проблему, просто забыл настроить правильно, галочку не поставил на masm и Item type стоял не участвовать в компиляции
0
|
14.08.2014, 15:04 | |
14.08.2014, 15:04 | |
Помогаю со студенческими работами здесь
20
Не работает отладка кода в Visual Studio pro 2012+qt visual studio add-in 1.2.1 Ошибка запуск проекта Visual Studio 2012 на Visual Studio 2017 Windows и Visual Studio 2012 не видит SQL Server 2012 Как заменить иконки в MS Visual Studio 11 (2012) ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |