![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 06.01.2016
Сообщений: 4
|
![]()
Нужно вставить в си++ код (g++) асемблерную вставку, никак не выходит.
Исходный код такой: uint a; a = a +8; Пишу следующее: __asm__("add $8, a"); Компилятор выдает - undefined reference to 'a' Оно понятно, в коде ассемблера вдруг появилась переменная. Захожу с другой стороны: __asm__("add %1, %2, %0" : "=r" (a) : "r" (a), "r"(8)); Теперь уже ассемблер пишет об ошибке: number of operands mismatch for add Нормальных примеров в гуглу не нашел, лепил из того что было, понимаю, что пишу неверно, подскажите как правильно? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,368
|
![]()
Попробуйте так:
1) объявите a обычной переменной 2) загрузите эти переменную в регистр 3) выполняйте операцию с регистром 4) записывайте результат обратно в переменную. Можно попропобовать "сокращенный" вариант: int a; __asm__("add $8, a") Но я просто уже не помню какие режимы адресации у инструкции add и может ли она складывать напрямую в память. |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
![]()
http://www.ibiblio.org/gferg/ldp/GCC...bly-HOWTO.html
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html Можно, например, так: Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
На каком Visual Studio можно отлаживать ассемблерный код для винды 32р | седьмой | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 13 | 20.06.2017 17:01 |
Где достать программу которая составляет Ассемблерный текст по собранной блоксхеме? | AlexeyR23 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 30.11.2011 02:59 |
Имеется ли у вас какой ассемблерный код? | rusell | Помощь студентам | 5 | 04.11.2009 16:11 |
ассемблерный транслятор для новичка | Oxy | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 08.10.2009 19:25 |