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


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

Автор Тема: Мутное знакомство с ассемблером  (Прочитано 1124 раз)

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

Оффлайн [DarkNet]Alpha

  • Автор темы
  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Друг написал какой-то код, решил я попробовать собрать. Проблема с переводом intel -> at&t почти решена. При сборке ловлю ошибку:
Error: no instruction mnemonic suffix given and no register operands; can't size instruction

(Нажмите, чтобы показать/скрыть)

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Мутное знакомство с ассемблером
« Ответ #1 : 29 Марта 2011, 04:51:27 »
incl?

Оффлайн [DarkNet]Alpha

  • Автор темы
  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: Мутное знакомство с ассемблером
« Ответ #2 : 29 Марта 2011, 13:01:04 »
Хм...
Теперь такое
Цитировать
/tmp/cc7jZhcG.o: In function `m1':
test.cpp:(.text+0x1b): undefined reference to `x1'
test.cpp:(.text+0x26): undefined reference to `x1'
test.cpp:(.text+0x37): undefined reference to `x2'
collect2: ld returned 1 exit status
Сборка завершилась с ошибкой.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Мутное знакомство с ассемблером
« Ответ #3 : 29 Марта 2011, 15:51:29 »
Спроси товарища что он этим кодом хотел сказать.
и какой потайной смысл несёт в себе cdq

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

int main()
{
    int x=0;
    int z=20;

    __asm__(
"m1:\n"
"incl %0\n"
"movl $8,%%eax\n"
"mull %0\n"
"addl $25,%%eax\n"
"movl %%eax,%%edi\n"
"movl $20000,%%eax\n"
"cdq\n"
"cmpl %1, %%eax\n"
"jc m1\n"
: "=m"(x)
: "m"(x), "m"(z)
    );

    printf("%d\n", x);
    return 0;
}
не факт что правильно по логике
вообще x можно затолкать в %ecx (он собственно для этого и существует) но у меня что-то не получилось

 

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