|
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 6
|
||||||
Метки в макросах в ассемблерной вставке10.12.2016, 19:50. Показов 4609. Ответов 8
Метки нет (Все метки)
В C++ написан макрос с ассемблерной вставкой, который содержит в себе метку "doit" и команду перехода на неё:
error C2412: 'doit' : case-insensitive label redefined Насколько я понял, это из-за того, что фрагмент кода дублируется, и метка вместе с ним. Можно ли как-нибудь скрыть эту метку, чтобы при каждом вызове макроса кусок кода видел только свою метку? Оформить это в виде макроса - обязательное условие по заданию, так что процедуры вопрос не решают. ![]() Вместо макроса #define пытался сделать ассемблерный macro, но он отвергается inline-asm'ом.
0
|
||||||
| 10.12.2016, 19:50 | |
|
Ответы с готовыми решениями:
8
Вызов функции в ассемблерной вставке C++. Условный переход в ассемблерной вставке. Получить разность двух меток в ассемблерной вставке |
|
Модератор
|
|
| 10.12.2016, 22:46 | |
|
Часто во встроенных ассемблерах допускается повторение меток при наличии модификаторов (типа, @@doit) или прагм.
Ещё возможен вариант при использовании синтаксиса masm32 - когда сама метка записывается @@, а обращение к ней или @@f или @@b в зависимости от того, где метка находится впереди или сзади.
1
|
|
|
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 6
|
|
| 11.12.2016, 11:38 [ТС] | |
|
У меня вроде masm, но символ собачки сразу вызывает error C2018: unknown character '0x40'
А можно поподробнее про прагмы?
0
|
|
|
Модератор
|
||||||||||||
| 11.12.2016, 12:03 | ||||||||||||
|
Прагмы - это директивы (указания) компилятору. О них нужно поискать в справке к самому компилятору.
Пример прагмы, которая что-то разрешает компилировать
Выходит, что нет локальных меток. А вот смотрите, что нашлось в интернет
1
|
||||||||||||
|
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 6
|
|
| 11.12.2016, 13:17 [ТС] | |
|
Пишу в VS2013, про прагмы почитат тут https://msdn.microsoft.com/ru-... 1s805.aspx, но для моей ситуации там, кажется, ничего нет.
По поводу метода Кнута - увы error C2400: inline assembler syntax error in 'opcode'; found 'constant'
0
|
|
|
Модератор
|
|
| 11.12.2016, 14:26 | |
Сообщение было отмечено MeowCoder как решение
Решение
Подобрать смещение по асм коду
jc $+15
2
|
|
|
Неэпический
|
|||||||||||
| 11.12.2016, 16:12 | |||||||||||
Сообщение было отмечено MeowCoder как решение
Решение
Как вариант:
Тут уже нужно непосредственно всю вставку смотреть.
3
|
|||||||||||
|
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 6
|
|
| 11.12.2016, 16:34 [ТС] | |
|
Ух, сколько возможностей извернуться) Смещение по коду помогло, спасибо!
0
|
|
|
13 / 11 / 4
Регистрация: 08.07.2017
Сообщений: 103
|
||||||
| 08.07.2017, 20:21 | ||||||
|
а надо было как здесь написано!
цитирую: Кроме того, есть ещё хитрый синтаксис для меток. Дело в том, что если наша вставка будет инлайниться в бинарнике несколько раз, то получится, что программа содержит несколько одинаковых меток. Что бы избежать этого к имени метки добавляется спец. последовательность "%=", которая внутри каждого блока asm заменяется на число, уникальное для всей программы.
0
|
||||||
| 08.07.2017, 20:21 | |
|
Помогаю со студенческими работами здесь
9
Вызов функции WinAPI в ассемблерной вставке Непонятки в ассемблерной вставке Очищение памяти в ассемблерной вставке Сложение длинных чисел в ассемблерной вставке Как правильно вставлять диррективу .386 в ассемблерной вставке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|