Столкнулся с проблемой использования меток во встроенном ассемблере.
При попытки компилировать вот эту процедуру:
/*-------------------------------------------------------*/
/* аналог паскалевской функции pos                      */
/*-------------------------------------------------------*/
// для совместимости с C99 нужно extern inline 
extern inline short int strpos(char ch1,char * s1,const char n1);
inline short int strpos(char ch1,char * s1,const char n1)
{ //регистры вроде не надо сохранять так как они по идеи не должны портить
// потомучто функция инлайн
register short int lng;
	__asm__  ( "push %edi"); //без volatile при оптимизации ошибки
	__asm__   ( "mov %0,%%edi"::"r"(s1));
	__asm__ __volatile__ ( "\
		mov $0x00FF,%%cx;\
	       mov %2,%%al;\
	       cld;\
	       repne scasb;\
	       not %%cl;\
	       cmp %1,%%cl;\
	       ja _slbl1;\
	       mov %%cx,%0;\
	       jmp _slbl2;\
               slbl1:\
		 mov $0xffff,%0;\
               slbl2:\
		 nop;":"=r"(lng):"r"(n1),"r"(ch1));
	__asm__   ( "pop %edi");
return lng;	
}
Компилятор раньше не ругался а теперь ругается на метки.
/home/yura/my_progr.cpp/snifflog/source/mysnlog.c:61: Error: symbol `slbl1' is already defined
/home/yura/my_progr.cpp/snifflog/source/mysnlog.c:61: Error: symbol `slbl2' is already defined
Использовать обычный ассемблер не очень хочется. Там нужно будет разбираться с соглашениями о вызовах и както указывать ему(компилятору) что нужно использовать именно это соглашение. Но если подругому никак то вообщем можно и отдельный ассемблерный файл. Главное найти пакет установки а то мне KDevelop пишит что не может найти CCAS и я не могу его найти с помощью менеджера пакетов. Вообщем одни сплошные грабли.
А так хотелось сделать аналог паскалевской функции pos в Си.

    
      Ответ на:
      
          комментарий
        от const86 
  
    
      Ответ на:
      
          комментарий
        от Baltika80 
  
    
      Ответ на:
      
          комментарий
        от const86 
  
    
      Ответ на:
      
          комментарий
        от const86 
  
    
      Ответ на:
      
          комментарий
        от io 
  
    
      Ответ на:
      
          комментарий
        от io 
  
    
      Ответ на:
      
          комментарий
        от const86 
  
    
      Ответ на:
      
          комментарий
        от Baltika80 
  
    
      Ответ на:
      
          комментарий
        от const86 
  
    
      Ответ на:
      
          комментарий
        от Baltika80 
  
    
      Ответ на:
      
          комментарий
        от www_linux_org_ru 
  
    
      Ответ на:
      
          комментарий
        от Baltika80 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум Какая-то фигня с виртуальными методами (2014)
 - Форум Запуск сервера CS GO не понятные ошибки (2015)
 - Форум Вопрос новичка: где найти исходный код вызова __libc_errno? Можно написать свой? (2023)
 - Форум [kernel] NUMA (2011)
 - Статьи Линукс, ассемблер и X11 (2023)
 
- Форум Метки (2010)
 - Форум Метки (2008)
 - Форум Метки процессов (2017)
 - Форум Метки дистрибутивов (2013)
 - Форум Исправьте метки (2008)