Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Ассемблерные вставки в gcc  (Прочитано 5196 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MaksimM

  • Автор темы
  • Участник
  • *
  • Сообщений: 115
    • Просмотр профиля
Ассемблерные вставки в gcc
« : 21 Сентября 2010, 17:02:54 »
Хочу сделать ассемблерную вставку в gcc. Для примера:
#include <stdio.h>
int main()
{
int a=5;
asm("mov ax,7");
}
Выводит ошибку:
main.c: Assembler messages:
main.c:5: Error: too many memory references for `mov'
Где то нашёл что синтаксис у ассемблера другой в Unix-системах. Но я только начал Ассемблер изучать и Си. Чё тут для вставок себе в голове кашу делать??? Не могли нормальный ассемблер в gcc вставить??????  :(
Единственно стабильная версия - LTS, остальные - беты.

Оффлайн kiv

  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
Re: Ассемблерные вставки в gcc
« Ответ #1 : 21 Сентября 2010, 17:41:53 »
Там AT&T синтакс. То есть надо писать не mov ax, 7, а movw $7, %ax. Так что единственный способ юзать ассемблер с нормальным синтаксисом - это писать ассемблерные процедуры на ассемблере (да хотя бы на моём любимом fasm), компилировать в объектный файл, а потом линковать его с основным файлом.

Оффлайн Grem

  • Любитель
  • *
  • Сообщений: 78
    • Просмотр профиля
Re: Ассемблерные вставки в gcc
« Ответ #2 : 21 Сентября 2010, 18:19:56 »
$, % нужны для того, чтоб включать в код переменные С, без конфликтов.
$хх - адрес в памяти.
%хх - имя регистра.
mov ax,7это синтаксис Интела.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Ассемблерные вставки в gcc
« Ответ #3 : 22 Сентября 2010, 10:52:22 »
Не могли нормальный ассемблер в gcc вставить??????  :(
И какими критериями определяется нормальность ассемблера?  :idiot2:

Оффлайн MaksimM

  • Автор темы
  • Участник
  • *
  • Сообщений: 115
    • Просмотр профиля
Re: Ассемблерные вставки в gcc
« Ответ #4 : 22 Сентября 2010, 11:31:16 »
ну тогда скажите ВСЕ отличия Unix-синтаксиса ассемблера от обычного.

kiv, спс.
Единственно стабильная версия - LTS, остальные - беты.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Ассемблерные вставки в gcc
« Ответ #5 : 22 Сентября 2010, 11:55:34 »
Нет такого UNIX синтаксиса. Есть синтаксис AT&T http://ru.wikipedia.org/wiki/AT&T-%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81

Оффлайн MaksimM

  • Автор темы
  • Участник
  • *
  • Сообщений: 115
    • Просмотр профиля
Re: Ассемблерные вставки в gcc
« Ответ #6 : 22 Сентября 2010, 15:27:10 »
а в этой статье в Википедии все отличия синтаксиса AT&T от "Intel"?
Единственно стабильная версия - LTS, остальные - беты.

 

Страница сгенерирована за 0.015 секунд. Запросов: 22.