The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

26.03.2008 10:59  Основы написания переносимого кода

Сергей Каличев представил перевод статьи с описанием типичных проблем, возникающих при написании переносимого кода, некоторые из проблемы очевидны, но ошибки, с ними связанные, продолжают регулярно появляться в реальном коде.

  1. Главная ссылка к новости (http://lex.iki.rssi.ru/~serj/docs/...)
Тип: яз. русский / Практикум
Ключевые слова: porting, gcc, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
Реклама
Обсуждение Линейный вид (Ajax) | Показать все | RSS
 
  • 1.1, Аноним, 11:18, 26/03/2008 [ответить] [смотреть все]
  • +/
    Куча грамматических ошибок ... весь текст скрыт [показать]
     
  • 1.2, Konwin, 11:19, 26/03/2008 [ответить] [смотреть все]  
  • +/
    Мне вот интересно - написание переносимого кода описывается уже лет 20 так - зачем писать что-то еще?
     
  • 1.3, Ivan_Dives, 11:43, 26/03/2008 [ответить] [смотреть все]  
  • +/
    revision 1.8
    date: 2001/11/29 22:55:57; author: ross; state: Exp; lines: +1 -6
    Delete the old BUGS section entry:
    > On the VAX bytes are handled backwards from most everyone else in
    > the world. This is not expected to be fixed in the near future.

    не понял при чём тут вакс. Это, насколько я знаю, компьютеры, которые использовались ещё в 1970... так к чему они здесь?

     
     
  • 2.4, whirlwind, 12:12, 26/03/2008 [^] [ответить] [смотреть все]  
  • +/
    это такой тончайший юмор, в конце статьи пояснение:
    >В названии (''Fighting the lemmings'') нет какого-то особого смысла. Раньше мы говорили >''весь мир VAX'', а теперь весь мир -- i386 и везде работает linux. Все авторы просто >следуют за этим ''леммингом -- вожаком'' и пишут (а ещё хуже -- тестируют) код >исключительно под i386/linux.
     
  • 2.5, Ivan_Dives, 12:15, 26/03/2008 [^] [ответить] [смотреть все]  
  • +/
    >revision 1.8
    >date: 2001/11/29 22:55:57; author: ross; state: Exp; lines: +1 -6
    >Delete the old BUGS section entry:
    >> On the VAX bytes are handled backwards from most everyone else in
    >> the world. This is not expected to be fixed in the near future.
    >
    >не понял при чём тут вакс. Это, насколько я знаю, компьютеры, которые
    >использовались ещё в 1970... так к чему они здесь?

    всё, понял

     
  • 1.6, послушайте, 12:17, 26/03/2008 [ответить] [смотреть все]  
  • +/
    > Хотя портирование на NetBSD/sparc64 практически является таким тестом ;-)

    собственно я сейчас там на sparc64.

    и вот такая конструкция:
    uint8_t a[] = { 41, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 3 };

    uint32_t u32 = *((uint32_t *) &a[1]);

    дает Bus error.

    это просто пример, пришлось определить (не дословно):
    #define LOAD32(p, b)    b=(((((((uint32_t)(((b) & 0) | *(((uint8_t *)p) + 3)) << 8) | *(((uint8_t *)p) + 2)) << 8) | *(((uint8_t *)p) + 1)) << 8) | *((uint8_t *)p))

    но это думаю медленно, можно как нибудь оптимизировать?

     
     
  • 2.7, a, 14:15, 26/03/2008 [^] [ответить] [смотреть все]  
  • +/
    typedef union {
      char a[4];
      uint32_t b;
    } c_t;

    c_t c;

    c.a[0] = 41;c.a[1] = 0;c.a[2] = 0;c.a[0] = 0;

    printf("%u", c.b);

     
  • 2.8, Аноним, 18:06, 26/03/2008 [^] [ответить] [смотреть все]  
  • +/
    и вот такая конструкция uint8_t a 41, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 3 ... весь текст скрыт [показать]
     
     
  • 3.13, послушайте, 10:34, 27/03/2008 [^] [ответить] [смотреть все]  
  • +/

    >ЧУВАААК, почитай доки к gcc, в частности non-bugs.txt или как там. ЗАПРЕЩЕНО
    >такое делать.
    >Чтобы это заработало у gcc есть ключик, но они говорят что в
    >стандартах на C такое поведение не описано, поэтому сосямба. Ну и
    >ничего что этот код совершенно непереносим из-за endianess?

    ЧУВАК это просто ПРИМЕР чтобы смысл в чем ОШИБКА показать..

     
  • 2.9, Аноним, 20:02, 26/03/2008 [^] [ответить] [смотреть все]  
  • +/
    И это ты типа удивлен Вон из профессии C ... весь текст скрыт [показать]
     
  • 2.11, очень жаль, 10:30, 27/03/2008 [^] [ответить] [смотреть все]  
  • +/
    ну чи то разорались? умные все что ли?
    пытаюсь перенести игрушку одну с DOS с РЕСУРСАМИ это вам вообще о чем нибудь говорит?
    а
     
     
  • 3.12, очень жаль, 10:31, 27/03/2008 [^] [ответить] [смотреть все]  
  • +/
    для тех кто все еще ТРАМВАЕ - РЕСУРСЫ БИНАРНЫЕ
     
  • 1.10, pavlinux, 23:26, 26/03/2008 [ответить] [смотреть все]  
  • +/
    Сергей Каличев - статья полезная, перевод нужный...

    Давеча, пролетало, https://www.securecoding.cert.org/confluence/display/seccode/CERT+C+Secure+Coding+Standard

    Уже можете переводить :)

     
  • 1.14, vle, 11:10, 27/03/2008 [ответить] [смотреть все]  
  • +/
    Мда, "К сожалению, NetBSD заботится о двоичной совместимости".
    Как раз к счастью NetBSD заботиться о бинарной совместимости, и очень жаль тех, кто о ней не заботится.
     
  • 1.15, Аноним, 12:56, 28/03/2008 [ответить] [смотреть все]  
  • +/
    Статья на слабую тройку Перечислено только около 10 типичных ошибок программ... весь текст скрыт [показать]
     
     
  • 2.16, gena2x, 14:34, 12/02/2009 [^] [ответить] [смотреть все]  
  • +/
    >Как можно перепутать обращение к невыравненным данным (по их размеру) с проблеммой strict алиасинга в (я бы посоветовал gena2x попробовать свой тест на ветке 2.x.x - 3.x.x например )?

    Пример приводился для x86/linux/gcc. sizeof(int)==sizeof(long) - о каком выравнивании (по размеру) речь?

    Да, надо было дописать что -fstrict-aliasing только в четвертой ветке по умолчанию включается в -O2.

    >Wstrict-aliasing=2 тогда все проблемные места будет сразу видно:

    Не все, к сожалению, посему придётся разобраться в проблеме.

    > То дает инструкцию компилятору считать что все указатели разных типов указывают на непересекающиеся области памяти.

    Почти все, char* например - исключение.

     

    Ваш комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:
     
    Навигация
     
     Новости для экспорта XML  twitter  
     Сводные | за день | мини-новости
     Разделы новостей
     Что нового на OpenNet
     Поиск в новостях
     Новые комментарии
     Добавить свою новость

    Важное
    - 26.01 Компания HP представила план открытия платформы webOS и открыла код фреймворка Enyo (32 +11)
    - 25.01 Релиз KDE SC 4.8 (72 +46)
    - 24.01 Разработчики Ubuntu представили инновационную альтернативу традиционным меню (272 +8)
    - 24.01 Проект Mozilla представил релиз компилятора для языка программирования Rust (175 –3)
    - 23.01 В ядре Linux найдена локальная root-уязвимость (190 +36)
    - 16.01 Samsung объединит мобильную платформу Bada c проектом Tizen, пришедшим на смену MeeGo (82 +23)
    - 13.01 Официально представлен релиз FreeBSD 9.0. Обзор новшеств (285 +58)

    Советы
    - 25.01 Использование systemtap для устранения уязвимости в реализации /proc/pid/mem
    - 24.01 Мониторинг загрузки многоядерного сервера по каждому ядру в отдельности в Linux
    - 23.01 Осуществление ОGSM/SMS/USSD вызовов с использованием утилиты mdbus
    - 13.01 Интерактивный firewall в Linux
    - 08.01 Советы по увеличению автономной работы ноутбука с Debian/Ubuntu

    Обсуждаемые новости
    - 03:39 Обоснование целесообразности переноса компонентов из корня в (135)
    - 03:36 Официально представлен релиз FreeBSD 9.0. Обзор новшеств (289)
    - 03:11 90 выпуск новостей проекта ReactOS (10)
    - 03:10 IBM прекращает выпуск Lotus Symphony и перебрасывает ресурсы (16)
    - 02:46 Релиз мультимедиа пакетов FFmpeg 0.10 и Libav 0.8 (16)
    - 02:32 Компания Google представила рекомендации по ускорению работы (66)
    - 02:21 Евросоюз ратифицировал Торговое соглашение по борьбе с контр (76)
    - 02:03 Используемый в Firefox JavaScript-движок будет работать толь (30)

    АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Подробнее о проведении акции вы можете прочитать на странице сайта.


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList