The OpenNET Project / Index page

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

Доступен Vcc, C/C++ компилятор для Vulkan

10.01.2024 10:17

После трёх лет разработки представлен исследовательский проект Vcc (Vulkan Clang Compiler), нацеленный на создание компилятора, способного транслировать код на языке С++ в представление, выполняемое на GPU, поддерживающих графический API Vulkan. В отличие от моделей программирования GPU на базе языков шейдеров GLSL и HLSL в Vcc развивается идея полного отказа от использования отдельных языков шейдеров и предоставляется возможность прямой компиляции кода C/C++ для Vulkan. Наработки проекта распространяются под лицензией MIT.

Для компиляции кода задействованы компоненты проекта LLVM и Clang в качестве фронтэнда. Для выполнения на GPU развивается собственное промежуточное представление шейдеров Shady и компилятор для преобразования кода в это представление. По возможности поддерживается компиляция обычного стандартного кода C/C++, а для поддержки специфичных для GPU возможностей предоставляется несколько дополнительных встроенных функций.

В Vcc применяются штатные возможности C/C++ для управления ходом выполнения программы, включая возможность использования оператора "goto". Допускается вызов функций, рекурсивное выполнение функций, использование физических указателей, теггированных указателей и указателей на функции, выполнение арифметических операций над указателями, а также определение раскладки типов в памяти.

Для достижения поддержки возможностей C/C++, таких как функции и указатели, промежуточное представление Shady расширено поддержкой специальных конструкций. В общем виде Shady базируется на промежуточном представлении SPIR-V 3 и использует эмуляцию для реализации расширенных возможностей, которые напрямую невозможно реализовать поверх SPIR-V. Для использования в программах специфичных для шейдеров возможностей предлагаются встроенные функции и аннотации.


   #include <shady.h>

   descriptor_set(0) descriptor_binding(1) uniform sampler2D texSampler;

   location(0) input vec3 vertexColor;
   location(1) input vec2 texCoord;

   location(0) output vec4 outColor;

   fragment_shader void main() {
       vec4 fragColor;
       fragColor.xyz = vertexColor;
       fragColor.w = 1.0f;
       outColor = texture2D(texSampler, texCoord) * fragColor;
   }

Для работы требуется GPU с поддержкой Vulkan 1.1, расширения VK_KHR_buffer_device_address и типов Int8, Int16 и Int64. Vcc совместим с Vulkan-драйверами radv (AMD Mesa), amdvlk (AMD), nvk (NVIDIA), anv (Intel Mesa) и проприетарными драйверами AMD, Intel Arc и NVIDIA. Из ограничений реализации упоминается отсутствие поддержки исключений C++, недоступность функций malloc/free и непереносимость функций и указателей между хост-системой и GPU.

  1. Главная ссылка к новости (https://xol.io/blah/introducin...)
  2. OpenNews: Опубликован графический стандарт Vulkan 1.3
  3. OpenNews: Представлена спецификация OpenCL 3.0
  4. OpenNews: Vortex - открытый GPGPU на базе архитектуры RISC-V, совместимый с OpenCL
  5. OpenNews: Intel открыл код реализации OpenCL, выполняемой на CPU
  6. OpenNews: Представлен Rust GPU, инструментарий для разработки шейдеров на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60413-vcc
Ключевые слова: vcc, vulkan, gpu, compile
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (79) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, 1 (??), 10:22, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +15 +/
    > В Vcc применяются штатные возможности C/C++ для управления ходом выполнения программы, включая возможность использования оператора "goto".

    Шах и мат хейтерам goto !!!!

     
     
  • 2.7, Lost Inside (ok), 10:58, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Железно-деревянные грабли, разбросанные по земле, заменили на грабли из композитных материалов, но они все так же больно лупят по бошкам.
     
     
  • 3.89, Аноним (89), 16:39, 16/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Причём ещё и с неправильной лицензией:
    > Наработки проекта распространяются под лицензией MIT

    а не GPL как у GCC (с которого название сплагиатили) - это чтобы корпорациям было легче тырить ваши труды

     
  • 2.17, Аноним (17), 12:26, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >возможность использования оператора "goto"

    Возможность, но не обязательность.

     
  • 2.24, Пряник (?), 13:17, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    goto hell
     
  • 2.33, Аноним (-), 14:28, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Не кричи. В сишке тоже есть goto, но никто в здравом уме не будет его использовать.
     
     
  • 3.45, kusb (?), 17:32, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это же прямой способ выйти или войти из чего-то. Очень полезно.
     
     
  • 4.47, Аноним (47), 17:56, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • –7 +/
    А заодно и прекрасный индикатор б#длокода и/или плохо продуманной архитектуры.
     
     
  • 5.70, wyry (?), 05:17, 11/01/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > А заодно и прекрасный индикатор б#длокода и/или плохо продуманной архитектуры.

    Сразу видно, что кто-то не открывал Кнута ни разу в жизни, а о недостатках goto знает только от "IT-инфлюенсеров". Разумеется, что поводов применять goto в 21 веке не так уж много (а чаще их вообще нет), но и заявлять вещи, подобные вашим, может только сам быдлокодер с уровнем знаний "где-то в инете или в универе сказали, что goto - это плохо и ведёт к спагетти-коду" (типичное заявление о goto), в то время как к ещё бОльшему спагетти-коду ведёт банальное ООП в кривых руках и мозгах.

     
     
  • 6.84, Аноним (84), 18:53, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот на универ бочку катить не нужно — в моем достаточно хорошо объяснили и научили думать когда и как что применять, включая оператор goto.  Это вот как-раз ребятки не желающие учиться и на готовых ответах от своих коллег желающие выглядеть перед начальством сильно умными обычно говорят то что не понимают сами. Где-то что-то слышали, а почему тогда в каком-то конкретном решении именно так поступили в целом не знают. Ох, я много раз видел таких синьерчиков — зарплату получают больше, все значит начинают права качать. Самодуры!
     
  • 3.83, Аноним (84), 18:45, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А вы ассемблер я так понимаю не изучали?
     
     
  • 4.86, bOOster (ok), 06:44, 15/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и причем тут Ассемблер?
     
  • 2.69, Вы забыли заполнить поле Name. (?), 04:53, 11/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Людям в универах и лорах скажут, что goto плохо, а вот почему плохо - не скажут. Вообще, пока за пределы функции с ним не вылезаешь, то никто и пикнуть не должен о том, что оно плохо.
     
     
  • 3.71, Доктор (??), 10:16, 11/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вы, мягко говоря, несёте невероятну чушь, вам не стыдно? Как такая *7*?*? может прийти в голову?

    На кой чёрт вам goto?

     
  • 3.75, anonymous (??), 00:30, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    с goto и внутри функции можно дров наломать
     
  • 3.87, bOOster (ok), 06:47, 15/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    идиот использующий goto - может использовать его как переход из одной функции вообще в другую. В результате получается такой ахтунг - что никто и никогда отладить не сможет на предмет утечек или двойного/тройного освобождения памяти.
     

  • 1.2, Аноним (2), 10:41, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Кто-то решил переизобрести OpenGL и OpenCL?
     
     
  • 2.4, Аноним (4), 10:43, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    кто-то не видит разницы между api графики и языком шейдеров
     
  • 2.35, Аноним (-), 15:04, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Кто-то решил переизобрести OpenGL

    Это вообще не конкурент вулкану.

    > и OpenCL?

    А он сугубо про вычисления... вулкан забавен тем что там можно и графику, и вычисления, сразу.

     

  • 1.3, Аноним (3), 10:42, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >C++
    >код — на C
     
     
  • 2.5, Аноним (5), 10:54, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    C/C++
     
     
  • 3.12, Крестоносец (??), 11:17, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    C++/C
     
     
  • 4.15, Аноним (15), 12:00, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    неправильно.
    потому что переменные сокращаются: С/C++ == (С/C)++ == 1++ == 2.
    поэтому "код написан на C/C++" == "код написан на 2".
     
     
  • 5.29, Аноним (29), 13:39, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как ты будешь инкрементировать литерал?
     
     
  • 6.59, anonizmus (?), 19:59, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    следующая буква. А если последняя, то будет AA. AA++ = AB, AB++ = AC и т. д.
     
  • 5.31, Пользователь планеты Земля (?), 13:48, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ты разве ничего не слышал про приоритет операций ?
    https://ru.wikipedia.org/wiki/Приоритет_операции
    С/C++ == С/(C++)
     
     
  • 6.32, Пользователь планеты Земля (?), 13:57, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    отсюда следует что выражение для С/(C++) будет всегда меньше единицы при положительном С
    С/(C++) < 1
     
     
  • 7.66, freehck (ok), 22:37, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы забываете, что ++ по умолчанию является int-овым оператором, то есть мы тут имеем дело исключительно с целочисленными операциями, поэтому:

    С/C++ = C/(C++) = 1/(1++) = 1/2 = 0

    Всегда тождественный нуль!

    Поэтому "код написан на C/C++" следует читать как "код написан на 0".

     
  • 5.40, morphe (?), 16:35, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Неправда, тут UB
    По стандарту, между двумя последовательными "точками последовательности" (sequence points) значение изменяемого объекта (например, переменной) не должно быть изменено более одного раза, а также не должно быть считано, за исключением случаев, когда это считывание предназначено для определения значения, которое должно быть записано (как в выражении C = C + 1).

    Соответственно в данном месте компилятор имеет право выплюнуть ub2 и будет сегфолт.

     
     
  • 6.50, Аноним (-), 18:18, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Соответственно в данном месте компилятор имеет право выплюнуть ub2 и будет сегфолт.

    Имеет право, но может и не делать)
    Тут уже зависит от разработчика компилятора.

    Т.е это тот самый знаменитый Стандарт СИ!
    Который сводится к "Колбаса состоит из мяся и добавок. Происхождение мяса и вид добавок (специи, шпик, туал.бумага, овно) определяет компилятор рецепта"
    И за который так ценят дыряшку любители CVE.

     
     
  • 7.63, morphe (?), 21:11, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Имеет право, но может и не делать)
    > Тут уже зависит от разработчика компилятора.

    Но полагаться на конкретное поведение нельзя, компилятор имеет право на всё в данном случае, а соответственно даже если C/C++ где-то и отрабатывает как человек ожидает (pun intended), то это всё равно остаётся UB и говном.

     
  • 5.53, Аноним (53), 18:42, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    косинус/синус=ко
    )
     
     
  • 6.67, freehck (ok), 22:42, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > косинус/синус=ко
    > )

    поздравляю с открытием, коллега
    из этого прямо следует, что тангенс всегда тождественен единице, ибо:

    косинус/синус = ко = котангенс

    а также становится понятно, что

    синус/косинус = 1/ко = тангенс = 1

    и следовательно получаем, что ко = 1

    наконец-то мы знаем, чему равна константа ко!

     
     
  • 7.77, Аноним (53), 08:49, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >наконец-то мы знаем, чему равна константа ко!

    Если ко=1, то все углы в мире = 45 градусам (n * pi/4)
    ко - это не константа, а функция: ко = 1/x )
    Как много нам открытий чудных...

     
  • 5.88, bOOster (ok), 06:51, 15/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты дурачек чтоли? Как это ты так скобки выставил? А тем более в равенство все вписал?

    Предположим С=1
    С/С++ = 1/2; (C/C)++ = 2;

    Мда, математическая грамотность языка программирования у недопрограммистов на высоте.

     
  • 2.27, Аноним (27), 13:23, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем усложнять, если можно упростить?
     

  • 1.6, Шарп (ok), 10:57, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не увидел в приведённом примере раскрытия потанцевала c++. Приведённый код практически идентичен коду на обычном языке шейдеров.
     
     
  • 2.9, Аноним (9), 11:04, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > потанцевала

    В следующий раз заходи на OpenNet по-трезвому.

     
     
  • 3.13, Bottle (?), 11:32, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не, это специально так написано. Видел мемы про "раскрытие потанцевала" в консолесрачах ещё давно.
     
  • 3.78, aname (?), 13:09, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > по-трезвому

    Лови нюфага!

     
  • 2.28, Аноним (27), 13:24, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А не нужно. Нужна скорость.
     
     
  • 3.34, Аноним (17), 14:40, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скорость за счёт аппаратной реализации параллельных матопераций в GPU, а не за счёт конструкций языка.
     

  • 1.10, Иисус (?), 11:08, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    А чем оно лучше/хуже rust-gpu, который уже давно есть и работает?
     
     
  • 2.11, Крестоносец (??), 11:16, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > А чем оно лучше/хуже rust-gpu

    Лучше тем, что это C и C++, а не Rust.

     
     
  • 3.16, Иисус (?), 12:26, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    То есть примерно ничем. По твоим словам. Хотя оно, например, поддерживает Windows XP. Не то, чтоб прям что-то нужное, но ситуативная фича надо полагать.

    Полагаю, самый существенный минус - весьма скудная документация. Сложно определить, что именно будет интересными фичами, если про них даже прочитать негде. У rust-gpu есть доки разные и сообщество. Например списки, чего они сделали/недоделали с точки зрения SPIR-V https://github.com/EmbarkStudios/rust-gpu/issues/383

     
     
  • 4.42, Аноним (42), 16:44, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да всем плевать, иди проповедуй в другом месте.
     
  • 3.25, Пряник (?), 13:19, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И хуже тем, что это C и C++, а не Rust.
     
     
  • 4.79, aname (?), 13:11, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Минусы будут?
     
     
  • 5.80, Пряник (?), 15:55, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ищущий да найдёт.
     
     
  • 6.90, aname (?), 15:51, 29/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ищущий да найдёт.

    Имещий да покажет

     
  • 2.18, Ivan7 (ok), 12:36, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    1) Зачем тебе rust в шейдерах?
    2) Зачем тебе rust?
     
     
  • 3.20, Иисус (?), 13:03, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    1) Лично мне не нужен, мне wgpu-rs достаточно для моих скромных задач.
    2) Я код на нём иногда пишу. Перешёл на оный с гошечки и крестов.

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

    Кресты (в отличии от Няшного Си, который подкупает своей простотой) слишком неудобны для реального использования. Любая многопоточность - боль (а мне нужна). Нормальной инфраструктуры нет. Компилятор медленный. Все пишут на каком-то своём диалекте. Управления зависимостями нет.

     
     
  • 4.43, Аноним (42), 16:45, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Все неосиляторы С++ так сначала пишут. А ты попробуй попрограммировать на нем пару годиков, тогда поймешь его мощь и выразительную силу.
     
     
  • 5.68, laindono (ok), 03:26, 11/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В моём понимании "попробовать язык" это как раз попрограммировать на нём пару годиков.

    Проблема в том, что кресты невозможно как-то освоить за эти пару годиков. Собственно у меня нет желания тратить всю жизнь на один единственный ЯП. Все практически полезные фичи, которые есть в крестах так или иначе покрываются растом. С другой стороны у крестов нет концепции лайвтаймов и в целом штуки, так или иначе завязанные на многопоточку это боль в крестах. А для меня это важно, соответственно переход от ржавого к крестам для меня будет даугрейдом.

    Получается, что да. C++ я не осилил, но при этом ничего не потерял, только приобрёл.

     
     
  • 6.73, Вася (??), 12:48, 11/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    От повторения слова "халва", во рту слаще не станет. Я неосиялтор, но это звучит гордо! Неосиляторы превосходят всех остальных! Все завидуют неосиляторам, потому что чем больше они неосиливют - тем больше приобретают!
     
     
  • 7.76, laindono (ok), 04:39, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кресты для осиливания, ржавый для программирования. Получается так с твоих слов
     
  • 5.81, Пряник (?), 15:58, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Может Rust и не лучше Си, но уж точно лучше С++
     
  • 3.22, Аноним (22), 13:08, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Странный вопрос.
    > 2) Зачем тебе rust?

    Язык ядра линукс, в отличии от C++.
    Но который лучше чем С (тк его взяли в ядро на замену сишки).

    > 1) Зачем тебе rust в шейдерах?

    А почему бы и нет)?

     
     
  • 4.30, Аноним (30), 13:45, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Слишком громко сказано, учитывая сколько кода rust в ядре и что он по умолчанию вообще отключен и даже не требует зависимости от rust. А так же то, что C - это подмножество C++.
     
     
  • 5.48, Аноним (47), 18:00, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, уже давно не так. Это скорее два частично пересекающихся подмножества, т.к. есть валидный сишный код, который не скомпилится как с++ и наоборот.
    https://www.geeksforgeeks.org/write-a-c-program-that-wont-compile-in-cpp/
     
     
  • 6.72, Аноним (72), 10:50, 11/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это никогда не было так (пример с 'int new = 5;' этак и в 1985 должен не работать) но на практике это более-менее так с точностью до процента библиотек, не собирающихся плюсовым компилятором.

    К тому же нет постоянной тенденции к расхождению, точнее, к выходу за подмножество C++. Вот в C++20 добавили недо-сишные designated initializers и часть C перестала выходить за подмножество C++.

     
     
  • 7.82, Пряник (?), 16:00, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    С++ создавался изначально как доработка С, но вырос самостоятельным языком и пошёл своим путём. Хотя до сих пор есть проекты, где пытаются писать код, способный компилироваться в обоих языках (психи).
     
  • 2.44, Аноним (42), 16:54, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >rust-gpu
    >Note: This project is still heavily in development and is at an early stage.

    Этим как бы все сказано. Обычная ситуация для ржавых проектов - вечная альфа-версия.

     
     
  • 3.49, Аноним (47), 18:01, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    То ли дело это поделие) Прям завершенный релиз-кандидат))
    "Vcc - the Vulkan Clang Compiler, is a proof-of-concept C and C++ compiler"
    Это вообще proof-of-concept.
     

  • 1.19, corvuscor (ok), 12:51, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если это будет переносимо на уровне собранных бинарников - я обеими руками за.
     
     
  • 2.21, Аноним (17), 13:03, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное, только между одинаковыми чипами GPU.
     
  • 2.23, Иисус (?), 13:11, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Компилируется в SPIR-V, так что должно по идее.
     

  • 1.26, Пряник (?), 13:22, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Как всё сложно. Почему бы просто не компилировать из LLVM в машинный код GPU?
     
     
  • 2.36, Аноним (-), 15:06, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Как всё сложно. Почему бы просто не компилировать из LLVM в машинный код GPU?

    Которого именно их GPU для начала, например?

     
     
  • 3.38, Пряник (?), 15:23, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну хотя бы в наиболее популярную архитектуру.
     
     
  • 4.39, Аноним (17), 16:07, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так они даже у одного производителя разных моделей не обязаны быть двоичносовместимыми.
     
  • 2.46, Аноним (46), 17:52, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Компилировал LLVMом в r600 OpenCL-ядро. При задействовании комп вис намертво.
     

  • 1.37, mos87 (ok), 15:19, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    очередной велосипед?
     
     
  • 2.51, Аноним (-), 18:31, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да! А ты что против?
    Может ты еще скажешь, что 100500 разных DE и дистрибутивов линкуса это тоже ненужно?
    Так, тебя еретика, тут быстренько анафеме придадут!
     
     
  • 3.74, mos87 (ok), 18:37, 11/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    регулярно тут на попеннете это говорю))

    на диванную инквизицию пох

     

  • 1.52, zog (??), 18:38, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вспомнился один древний знакомый, который ещё лет так 20 назад негодовал: "Почему всем так не нравится goto? Это же простой JMP".
     
     
  • 2.55, Аноним (17), 19:32, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому, что ЯВУ не ассемблер. Даже и Сишка.
     
  • 2.65, freehck (ok), 22:29, 10/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему всем так не нравится goto? Это же простой JMP

    Ну не совсем. JMP позволяет прыгнуть по регистру, а в него ты можешь заранее вычислить то, что тебе нужно. Так что goto -- это частный случай JMP, а именно -- прыжок по фиксированному адресу.

     

  • 1.58, Аноним (-), 19:54, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кстати, а setjmp/longjmp поддерживаются?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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