Важная информация

User Tag List

Страница 11 из 13 ПерваяПервая ... 78910111213 ПоследняяПоследняя
Показано с 101 по 110 из 125

Тема: LLVM Backend для Z80

  1. #101
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    93
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andreyu Посмотреть сообщение
    Стандарт языка Си гарантирует, что char <= short <= int <= long.
    В вашем случае char = 1 байт, short = int = 2 байта, long на ваше усмотрение - 2-4 байта.
    Я, конечно, не программер. Но, по-моему, из приведённого выражения следует только то, что int не может быть больше long, а short - не больше int. Т.е. int может быть 4 байта, а long 2 байта - НЕТ.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  2. #102
    Master
    Регистрация
    27.01.2005
    Сообщений
    895
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    175
    Поблагодарили
    141 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Массив байт - для арифметики как-то не очень.

  3. #103
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,055
    Спасибо Благодарностей отдано 
    219
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Современные каноны программирования на C, особенно для встраиваемых систем, отказываются от традиционных типов int, short и long, и рекомендуют использовать только заданные точно типы: int8_t, int16_t, int32_t, int64_t и их беззнаковые аналоги. Так что нет смысла здесь копья ломать. Пишите так, чтобы программа не зависела от ширины int, short и long на конкретной платформе.

    Собственно, откуда взялась эта идущая родом из истоков языка C неточная спецификация на ширину целых чисел? В те времена считалось, что пусть программист укажет, что желает работать с таким целым типом, который наиболее удобно представим на целевой платформе. Компилятор же решит, какая у этого типа будет ширина. Но на практике оказалось, что программисты пишут программы исходя не из наихудшего случая (т.е., к примеру, не допускать, чтобы переменные int выходили за диапазон -32768...32767, так как на некоторых компьютерах int могут иметь ширину 16 бит), а из той ширины типов, которая принята на платформе, под которой работает программист. И в конце концов вместо улучшения портируемости программ произошло ее ухудшение.

    В самом деле, пусть уж лучше портированная программа работает медленно, но правильно, чем сбивается или того хуже - чтобы в ней из-за переполнений образовывались дыры безопасности.

    Ситуация усугублялась несовместимостью библиотек и причудами компиляторов. В начале 2000х я пытался писать программы на C и C++ исходя из "наихудшего случая - 16 бит на int". Там, где были нужны 32-битовые переменные - использовал long. Но однажды мне пришлось компилировать свои программы на другой платформе, а там был принят стандарт: long = 64 бита. В результате съехали все размеры структур, и программа не смогла работать с двоичными файлами, с которыми она должна была работать. Так что даже программирование под "наихудший случай" не позволяет избегать проблем с портируемостью кода на С; более того, в данном конкретном случае мои усилия оказались даже вредными. Использовал бы int - все работало бы нормально.

    Так что теперь я перешел на типы фиксированной длины, разве что, кроме случаев, когда какая-нибудь библиотека или API требует старого традиционного типа. Чего и остальным советую.

  4. #104
    Activist
    Регистрация
    21.08.2009
    Адрес
    Cyprus
    Сообщений
    233
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Записываю сюда чтобы не забылось:
    В последней версии Rust (1.11) добавлена поддержка 16-битных указателей: https://github.com/rust-lang/rust/bl...110-2016-08-18
    rustc support 16-bit pointer sizes. No targets use this yet, but it works toward AVR support.
    (имеет отношение к теме; rust - "низкоуровневый" язык использующий LLVM для компиляции)

  5. #105
    Guru
    Регистрация
    16.12.2008
    Адрес
    Kharkov, Ukraina
    Сообщений
    2,221
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    18 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не взлетит. Только на одн... Держится. Без мотивации
    Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...

  6. #106
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от mastermind Посмотреть сообщение
    Записываю сюда чтобы не забылось:
    В последней версии Rust (1.11) добавлена поддержка 16-битных указателей: https://github.com/rust-lang/rust/bl...110-2016-08-18

    (имеет отношение к теме; rust - "низкоуровневый" язык использующий LLVM для компиляции)
    Вот тут пишут, что есть работоспособная реализация LLVM для Z80, поддерживается в том числе и 32bit int. Статья с примерами компиляции (используют clang):
    С-систаксис: https://olduino.wordpress.com/2014/1...f-inspiration/
    С++: https://olduino.wordpress.com/2015/0...llvm-compiler/

    Это кто то из наших таки добил гадину? И вообще, пробовал ли кто-то с помощью этого варианта LLVM собрать что-то приличное?
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  7. #106
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #107
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Судя по нику топикстартера - по ссылке это как раз его наработки. Просто здесь движуха отсутствует напрочь.

  9. #108
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    Судя по нику топикстартера - по ссылке это как раз его наработки. Просто здесь движуха отсутствует напрочь.
    Выглядит похоже. Хоть бы автор отписался что да как, съэкономил нам время на исследования методом проб и ошибок.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  10. #109
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    100 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У EARL последний коммит в 2013 году, о чем вы говорите.

    - - - Добавлено - - -

    А так вообще вот чувак более живой, пилит что-то: https://github.com/jacobly0/llvm-z80
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  11. #110
    Member Аватар для EARL
    Регистрация
    17.01.2006
    Адрес
    Тамбов
    Сообщений
    97
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Вот тут пишут, что есть работоспособная реализация LLVM для Z80, поддерживается в том числе и 32bit int. Статья с примерами компиляции (используют clang):
    С-систаксис: https://olduino.wordpress.com/2014/1...f-inspiration/
    С++: https://olduino.wordpress.com/2015/0...llvm-compiler/

    Это кто то из наших таки добил гадину? И вообще, пробовал ли кто-то с помощью этого варианта LLVM собрать что-то приличное?
    Я так и не доделал все до конца в связи с отсутствием времени и некоторыми проблемами в понимании как реализовать нужные мне вещи в LLVM. Примеры по ссылкам выдают как раз тот код, который и у меня был, т.е. вряд ли там кто-то что-то еще допиливал. Могу заверить, что некоторые конструкции просто не скомпилируются и поэтому проект неработоспособный.

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    А так вообще вот чувак более живой, пилит что-то: https://github.com/jacobly0/llvm-z80
    Да, у этого человека в настоящий момент идет понемногу движуха, но я не пробовал тестировать его код.
    Последний раз редактировалось EARL; 23.03.2017 в 19:04.
    ZX Evolution 4096 Rev.C + NeoGS 4096 Rev.C + PAL Coder Rev.C + FDD 3.5/HDD/CDROM
    Reverse U8

Страница 11 из 13 ПерваяПервая ... 78910111213 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •