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

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

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

Ссылки к новости:
  1. Главная ссылка к новости (http://lex.iki.rssi.ru/~serj/docs/...)
Ключевые слова: porting, gcc, (найти похожие документы)
Параметры:
Вид: яз. русский Тип: Практикум
При перепечатке указание ссылки на opennet.ru обязательно
Реклама
Обсуждение Ajax режим | Показать все | RSS
 
  • Куча грамматических ошибок ..., Аноним, 11:18, 26/03/2008 [ответить] (1)
  • +/
    текст скрыт [посмотреть] [смотреть все]

  • Основы написания переносимого кода, Konwin, 11:19, 26/03/2008 [ответить] (2) 
  • +/
    Мне вот интересно - написание переносимого кода описывается уже лет 20 так - зачем писать что-то еще?

  • Основы написания переносимого кода, Ivan_Dives, 11:43, 26/03/2008 [ответить] (3) 
  • +/
    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... так к чему они здесь?


     
  • Основы написания переносимого кода, whirlwind, 12:12, 26/03/2008 [ответить] (4) 
  • +/
    это такой тончайший юмор, в конце статьи пояснение:
    >В названии (''Fighting the lemmings'') нет какого-то особого смысла. Раньше мы говорили >''весь мир VAX'', а теперь весь мир -- i386 и везде работает linux. Все авторы просто >следуют за этим ''леммингом -- вожаком'' и пишут (а ещё хуже -- тестируют) код >исключительно под i386/linux.

  • Основы написания переносимого кода, Ivan_Dives, 12:15, 26/03/2008 [ответить] (5) 
  • +/
    >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... так к чему они здесь?

    всё, понял


  • OpenNews: Основы написания переносимого , послушайте, 12:17, 26/03/2008 [ответить] (6) 
  • +/
    > Хотя портирование на 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))

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


     
  • OpenNews: Основы написания переносимого , a, 14:15, 26/03/2008 [ответить] (7) 
  • +/
    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);


  • и вот такая конструкция uint8_t a 41, 0, 0, 0, 1..., Аноним, 18:06, 26/03/2008 [ответить] (8) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

     
  • OpenNews: Основы написания переносимого , послушайте, 10:34, 27/03/2008 [ответить] (13
  • +/

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

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


  • И это ты типа удивлен Вон из профессии C ..., Аноним, 20:02, 26/03/2008 [ответить] (9) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

  • OpenNews: Основы написания переносимого , очень жаль, 10:30, 27/03/2008 [ответить] (11) 
  • +/
    ну чи то разорались? умные все что ли?
    пытаюсь перенести игрушку одну с DOS с РЕСУРСАМИ это вам вообще о чем нибудь говорит?
    а

     
  • OpenNews: Основы написания переносимого , очень жаль, 10:31, 27/03/2008 [ответить] (12
  • +/
    для тех кто все еще ТРАМВАЕ - РЕСУРСЫ БИНАРНЫЕ

  • Основы написания переносимого кода, pavlinux, 23:26, 26/03/2008 [ответить] (10) 
  • +/
    Сергей Каличев - статья полезная, перевод нужный...

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

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


  • Основы написания переносимого кода, vle, 11:10, 27/03/2008 [ответить] (14
  • +/
    Мда, "К сожалению, NetBSD заботится о двоичной совместимости".
    Как раз к счастью NetBSD заботиться о бинарной совместимости, и очень жаль тех, кто о ней не заботится.

  • Статья на слабую тройку Перечислено только около 10 ..., Аноним, 12:56, 28/03/2008 [ответить] (15
  • +/
    текст скрыт [посмотреть] [смотреть все]

     
  • Гм..., gena2x, 14:34, 12/02/2009 [ответить] (16
  • +/
    >Как можно перепутать обращение к невыравненным данным (по их размеру) с проблеммой strict алиасинга в (я бы посоветовал gena2x попробовать свой тест на ветке 2.x.x - 3.x.x например )?

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

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

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

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

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

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



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

    Важное
    - 04.02 Линус Торвальдс включен в список 100 самых влиятельных изобретателей всех времен (70 –7)
    - 04.02 Досрочно завершено открытие исходных текстов ОС Symbian (49 +7)
    - 02.02 Компания Facebook открыла код высокопроизводительного PHP транслятора (64 +9)
    - 02.02 Статьи за неделю не попавшие в ленту новостей (выпуск 114) (1 +1)
    - 01.02 Вышло обновление дистрибутива Debian GNU/Linux 5.0.4 (25 +2)
    - 31.01 Первый релиз мобильной версии Firefox (20 +3)
    - 31.01 Началось бета-тестирование FreeBSD 7.3 и прекращена поддержка FreeBSD 6.3 (26 +8)
    - 29.01 Оценка производительности HTML5 элемента Canvas (22)

    Советы
    - 08.02 Неотображение данных в Lotus Notes 8.5 при его запуске в Ubuntu 9.10
    - 05.02 Резервное копирование MySQL с использованием LVM снапшотов в Debian Linux
    - 04.02 Удаленное воспроизведение звука средствами PulseAudio
    - 03.02 Настройка кластера для запуска Cloud-окружений с использованием Ubuntu Enterprise Cloud
    - 02.02 Использование Voice-VLAN на Cisco Catalyst для IP-телефона Nortel

    Обсуждаемые новости
    - 11:52 Первая версия Pinta, клона Paint.NET, написанного с использо (32)
    - 11:51 Gallium3D будет поддерживать DirectX 10/11 (14)
    - 11:43 Релиз системы резервного копирования Bacula 5.0.0  (20)
    - 10:56 Вышла стабильная версия ОС MINIX 3.1.6 (29)
    - 10:47 В Samba найдена серьезная уязвимость (46)
    - 10:22 Увольнения сотрудников Sun Microsystems коснулись проекта GN (11)
    - 10:17 Возможность бесплатного использования H.264 в web продлена д (89)
    - 10:01 Вышел Wine 1.1.38 (8)

    Подпишись на Linux Format и получи один из 3 ценных призов!

    Началась подписка на журнал Linux Format на 2010 год. Спешите оформить подписку на единственный в России ежемесячный журнал о Linux!

    Все, оформившие подписку на печатную версию журнала, получают диск с архивом журнала Linux Format за 2005-2009г. в подарок. Также в подарок вы получаете именную электронную версию в формате PDF. Теперь вы можете приступить к чтению журнала сразу в момент выхода свежего номера, не дожидаясь, пока вам доставят бумажную версию.

    Кроме того, все, оформившие подписку на первую половину или весь 2010 год в интернет-магазине ГНУ/Линуксцентра, автоматически становятся участниками розыгрыша ценных призов:


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