Как использовать неинициализированные данные во встроенной сборке GCC - PullRequest
1 голос
/ 17 апреля 2011

Я хочу использовать встроенную сборку GCC, синтаксис Intel.

Есть ли эквивалент для того, что я делаю в NASM:

myvar resb 1024

, который резервирует 1024 байта памяти в местоположении myvar?GCC, похоже, не нравится:

Error: no such instruction: `myvar resb 1024'

для

int main () {
    asm("myvar resb 1024");
    return 0;
}

1 Ответ

2 голосов
/ 17 апреля 2011

Если вы смешиваете C и встроенную сборку, вы должны позволить компилятору C управлять распределением памяти. Объявите вашу память как char myvar[1024] и при необходимости укажите ее в встроенной сборке. Возможно, вы можете получить к нему прямой доступ, но лучше всего передать его как аргумент asm() и позволить компилятору выбрать для вас формат адресации.

...