The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"asm in C file"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"asm in C file"
Сообщение от asm Искать по авторуВ закладки on 13-Июн-04, 22:38  (MSK)
Вот такая бага у меня:
есть прога:
#include <stdlib.h>
#include <stdio.h>

main (int argc, char *argv[])
{
__asm__ __volantile__{ тут код на асме}
return 0;
}

а вот что говорит компилятор:
%gcc -o cfile cfile.c
cfile.c: In function `main':
cfile.c:6: error: syntax error before "__volantile__"
%
Как быть? Прога под фрю... Кто знает как сделать асмовую вставочку в С под юникс?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "asm in C file"
Сообщение от Bob Искать по авторуВ закладки(??) on 14-Июн-04, 12:09  (MSK)
__asm__ __volatile__ ( ...... );
__asm__ ( ..... );
asm ( ... );

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "asm in C file"
Сообщение от asm Искать по авторуВ закладки on 14-Июн-04, 13:53  (MSK)
>__asm__ __volatile__ ( ...... );
%gcc -o cfile cfile.c
cfile.c: In function `main':
cfile.c:6: error: syntax error before ')' token
%

>__asm__ ( ..... );
%gcc -o cfile cfile.c
cfile.c: In function `main':
cfile.c:6: error: syntax error before ')' token
%

>asm ( ... );
%gcc -o cfile cfile.c
cfile.c: In function `main':
cfile.c:6: error: syntax error before ')' token
%

Не работает хоть убей ! :(((
Кто нибудь может привести рабочий пример под фрю? Буду очень и очень благодарен...
Мне бы просто понять как асм в С вставлять, а там я уже разберусь...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "asm in C file"
Сообщение от Bob Искать по авторуВ закладки(??) on 14-Июн-04, 16:11  (MSK)
#include <stdio.h>

unsigned long summa(unsigned long A, unsigned long B)
{
    unsigned long rez;
    asm(
" addl %Мx, %Йx \n"
: "=a"(rez)
: "a"(A),"d"(B)
    );

    return rez;
}

int main()
{
    unsigned long A, B, C;
    A = 3;
    B = 2;
    C = 0;
    printf("C - %u\n", C);
    C = summa(A, B);
    printf("C - %u\n", C);

    return 0;
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "asm in C file"
Сообщение от dimus Искать по авторуВ закладки(ok) on 20-Июл-04, 10:01  (MSK)
Гораздо лучше сделать отдельный файл на ассемблере, заголовочный файл, описывающий функции в нем и соединять их при линковке. Причина - облегчение переноса программ на другие платформы. Вот представь, приспичило тебе перенести твою чудо программу ну, скажем, на процессор ARM. И ты добросовестно сидишь и выковыриваешь из исходников команды x86 и заковыриваешь туда команды ARM. В результате у тебя два исходника, и каждый из них нужно поддерживать. Нахрен такой гемор? А так все ассемблерные функции у тебя в отдельном файлике - сделал новый под другую архитектуру и все проблемы решены.
Вообще, в целях повышения переносимости, лучше все платформо-зависимое валить в одну кучу, а все независимое - в другую. Меньше будет проблем и у программистов, и у их жертв :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру