Встроенный вопрос ассемблера - PullRequest
2 голосов
/ 19 января 2011

Используя встроенный ассемблер, я могу указать операцию добавления с два входа и один результат следующим образом:

int a = 5;
int b = 5;
int res;

asm volatile (
" add %1, %2, %0          \n\t"
: "=r" (res)            
: "r" (a), "r" (b)       
: "%g0"                                                   
); 

На 32-битной архитектуре это выдает мне командное слово, которое может выглядеть это: 0x91050101

Теперь мне интересно, а не явно указывать ассемблерный код для добавления, Я хотел бы сразу указать слово инструкции и поместить его в исполняемый файл. Это должно выглядеть примерно так

asm volatile (%x91, %x05, %x01, %x01);

Любой, у кого есть идея, где я могу найти больше информации о том, как это можно сделать и как должен выглядеть синтаксис, чтобы сделать это (приведенное выше - только дикая догадка).

Большое спасибо!

Ответы [ 2 ]

6 голосов
/ 19 января 2011
asm volatile (
" .byte 0x91, 0x5, 0x1, 0x1          \n"
);

должен это сделать.

Документация находится по адресу http://sourceware.org/binutils/docs/as/

1 голос
/ 19 января 2011

Microsoft поддерживает псевдоинструкцию _emit

http://msdn.microsoft.com/en-us/library/1b80826t.aspx

Я не уверен, что g ++ поддерживает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...