-
- Oracle анонсировало виртуальную машину Java ME3.3, которая может запускаться без ОС и даже на STM32 F207IG -> - Evgeny_CD(30.08.2013 12:00, ссылка)
- "MS working on a same compiler for C++ AND C# ! Not in 'incubation' but for production !" -> - Evgeny_CD(29.08.2013 19:52, ссылка)
- оно без мусорщика никак. а это не 50 мкс. - Vit(29.08.2013 15:59)
- Ысче как! RTSJ -> на машиненке Intel Pentium III 733 MHz, 256 MB RAM, Linux RedHat 7.2 + TimeSys Linux/RT 3.0 kernel дает типовую "нереалтаймовость" 30...50 мкс. Папира внутри Evgeny_CD(29.08.2013 18:37, ссылка)
- Вспоминаем про Cortex-A5 -> Процик $10 и память W971GG6JB25I (DDR2, 64М x 16, -40°C ~ 95°C) в розницу $5.6 Получаем "модулек за $20". Это, конечно, не Pentium III 733 MHz, но медленее, чем в 2-3 раза оно не будет (без плавучки). - Evgeny_CD(29.08.2013 18:58, ссылка)
- -> ПО для модулька. - Evgeny_CD(29.08.2013 20:16, ссылка)
- ну выделяя память на сферическую программу в вакууме может оно и так. кто гарантирует что это будет так в сложном случае? - Mahagam(29.08.2013 18:50)
- Т.е. таджикочистильщик памяти при правильном программизме RT мешает менее, чем 50 мкс. - Evgeny_CD(29.08.2013 18:38)
- в идеальных условиях:) - Vit(29.08.2013 18:56, ссылка)
- А у них там не RT система, и она вполне может давать нарастание времени исполнения GC по мере "урежения" его запуска. - Evgeny_CD(29.08.2013 19:13)
- в идеальных условиях:) - Vit(29.08.2013 18:56, ссылка)
- Вспоминаем про Cortex-A5 -> Процик $10 и память W971GG6JB25I (DDR2, 64М x 16, -40°C ~ 95°C) в розницу $5.6 Получаем "модулек за $20". Это, конечно, не Pentium III 733 MHz, но медленее, чем в 2-3 раза оно не будет (без плавучки). - Evgeny_CD(29.08.2013 18:58, ссылка)
- Ысче как! RTSJ -> на машиненке Intel Pentium III 733 MHz, 256 MB RAM, Linux RedHat 7.2 + TimeSys Linux/RT 3.0 kernel дает типовую "нереалтаймовость" 30...50 мкс. Папира внутри Evgeny_CD(29.08.2013 18:37, ссылка)
- насколько я знаю, все современные VM используют JIT, то есть исполняется таки бинарный код. если разбираться - рекомендую начать с QEMU - мега-проект. а стратегический смысл использования байткода - платформонезависимость. например, при вскрытии ыыыы(112 знак., 29.08.2013 15:56)
- Платформонезависимость в варианте VM - достаточно щирокое понятие. От "пойти на чем угодно" до "выжать из платформы все не меняя код на ЯВУ". - Evgeny_CD(29.08.2013 17:26)
- даже больше - полно проектов которые трактуют бинарный код для одного процессора как байткод (типа все современные интеля x86 внутри такие), ну а из открывавших свою архитектуру, то есть бинарные компилеры - DEC, трансмета, эльбрус(!). нашел ыыыы(11 знак., 29.08.2013 15:59 - 16:04, ссылка)
- Верно, но... Байткод от "продвинутых языков" - он совсем другой, чем asm реальных процов. Уровень абстракции заметно выше. IMHO. - Evgeny_CD(29.08.2013 17:24)
- вот кстати байткод для dalvik-а (виртуальной машины андроида), в железе реализовать - не проблема :) - ыыыы(29.08.2013 19:20, ссылка)
- Picojava скоро уже 15 лет исполнится - так что не новость. Статья внутри по современной реализации на Altera. Evgeny_CD(29.08.2013 19:32)
- а разве при этом не идёт лесом вся концепция безопасности VM? как поведёт себя железяка, получив на вход произвольно изменённый байт код? - Д.ARMоед(30.08.2013 02:56)
- Она позиционировалась всегда как сопроцессор. Типа за безопасность отвечают говнокодеры основного проца :) - Evgeny_CD(30.08.2013 12:31)
- безопасность в железе дорого стоит. исторически была только в совецких эльбрусах. слышал, что интел фелоу Бабаян пропихнул ее и в новые поколения итаниумов. в простейшем случае MMU/MPU решает 95% проблем с безопасностью железа (при прямых руках у ыыыы(42 знак., 30.08.2013 12:24)
- а разве при этом не идёт лесом вся концепция безопасности VM? как поведёт себя железяка, получив на вход произвольно изменённый байт код? - Д.ARMоед(30.08.2013 02:56)
- Picojava скоро уже 15 лет исполнится - так что не новость. Статья внутри по современной реализации на Altera. Evgeny_CD(29.08.2013 19:32)
- не сильно другой, пресловутый джава байткод, очень похож на самый обычный стековый проц, я сейчас не могу найти, но видел описание в виде "процессор даташит". там всякие ограничения в 64К из-за 2х байтных смещений и т.п. опять же если брать llvm и ыыыы(174 знак., 29.08.2013 18:59)
- вот кстати байткод для dalvik-а (виртуальной машины андроида), в железе реализовать - не проблема :) - ыыыы(29.08.2013 19:20, ссылка)
- Верно, но... Байткод от "продвинутых языков" - он совсем другой, чем asm реальных процов. Уровень абстракции заметно выше. IMHO. - Evgeny_CD(29.08.2013 17:24)
- вы вообще стиль того как пишут на том же шарпе видели? Mahagam(414 знак., 29.08.2013 15:49)
- 1) говнокод, 2) под linux и без шарпов так писать можно и никаких проблем с килобайтами (т.к. память физически может выделяться отнюдь не в момент new, а при первом обращении). - fk0(29.08.2013 17:28)
- что-то я второго момента не понимаю... - Mahagam(29.08.2013 17:40)
- Память выделяется только логическая. А в момент обращения к ней в страницах (по 4кБайт) с не выделенными физическими адресам возникает исключение, обрабатываемое ОСью, и уже фактически выделяется физическая память. - fk0(29.08.2013 22:56)
- до оси ещё new есть, который обязан выдать указатель. - Mahagam(30.08.2013 00:43)
- Выдаст. Но указывать он будет в память, которыая физически не выделена. Обращение по которой вызывает исключение. Между осью и new лежит sbrk, например. Его на 10000000 мегабайт сдвинули, но страницы в эти мегабайты не отмапили. Не знаю как fk0(11 знак., 30.08.2013 00:54)
- да я понял. но один хрен и виртуальные адреса рано или поздно иссякнут. говнокод всё пожрёт - Mahagam(30.08.2013 12:19)
- А для это 64-бит есть. До конца жизни вселенной хватит, а там хоть потоп... - fk0(30.08.2013 13:43)
- Ну кто его знает. Говнокодеры - они такие говнокодеры... - Evgeny_CD(30.08.2013 13:44)
- А для это 64-бит есть. До конца жизни вселенной хватит, а там хоть потоп... - fk0(30.08.2013 13:43)
- да я понял. но один хрен и виртуальные адреса рано или поздно иссякнут. говнокод всё пожрёт - Mahagam(30.08.2013 12:19)
- Выдаст. Но указывать он будет в память, которыая физически не выделена. Обращение по которой вызывает исключение. Между осью и new лежит sbrk, например. Его на 10000000 мегабайт сдвинули, но страницы в эти мегабайты не отмапили. Не знаю как fk0(11 знак., 30.08.2013 00:54)
- до оси ещё new есть, который обязан выдать указатель. - Mahagam(30.08.2013 00:43)
- Память выделяется только логическая. А в момент обращения к ней в страницах (по 4кБайт) с не выделенными физическими адресам возникает исключение, обрабатываемое ОСью, и уже фактически выделяется физическая память. - fk0(29.08.2013 22:56)
- что-то я второго момента не понимаю... - Mahagam(29.08.2013 17:40)
- 1) говнокод, 2) под linux и без шарпов так писать можно и никаких проблем с килобайтами (т.к. память физически может выделяться отнюдь не в момент new, а при первом обращении). - fk0(29.08.2013 17:28)
- почему не пишут ? gcj, Excelsior JET, RoboVM, JNC. Еще по ссылкам интересные проекты. - zeleny(29.08.2013 15:40, ссылка, ссылка)
- Excelsior JET -> и другие продукты этой отечественной компании - просто улет! --> Старое обсуждение этой компании - Evgeny_CD(29.08.2013 20:02, ссылка, ссылка)
- Их решения для встраиваемого рынка. Pentium II 200 MHz, RAM: 5MB minimum, 16+MB recommended, ROM/Flash: 15MB minimum -> Правда, хотят линух, который тут совершенно лишний. - Evgeny_CD(29.08.2013 20:14, ссылка)
- Т.е. на модульке в $20 -> оно будет летать - Evgeny_CD(29.08.2013 20:15, ссылка)
- Их решения для встраиваемого рынка. Pentium II 200 MHz, RAM: 5MB minimum, 16+MB recommended, ROM/Flash: 15MB minimum -> Правда, хотят линух, который тут совершенно лишний. - Evgeny_CD(29.08.2013 20:14, ссылка)
- RoboVM compiler translates Java bytecode into native ARM or x86 code. -> --> заточно для Android and iOS - Evgeny_CD(29.08.2013 20:00, ссылка, ссылка)
- JNC is a Java to native compiler. It allows AOT (ahead of time) compilation of your Java applications. With JNC, you can create real standalone native binaries (.exe on Windows) which will no longer depend on a JRE. -> - Evgeny_CD(29.08.2013 19:57, ссылка)
- GCJ ... compile Java source code to Java bytecode (class files) or directly to native machine code, and Java bytecode to native machine code. -> --> - Evgeny_CD(29.08.2013 19:54, ссылка, ссылка)
- Parrot - регистровая виртуальная машина, заточенная для языков с динамическими типами данных. -> Основа Perl 6, вот только "Разработка Perl 6 началась в 2000 году, и с переменной эффективностью продолжается и по сей день. У проекта нет чётких Evgeny_CD(96 знак., 29.08.2013 19:50, ссылка)
- LibJIT — это фундамент для создания большого числа виртуальных машин, динамических скриптовых языков. - Evgeny_CD(29.08.2013 19:44, ссылка)
- еще похожий VMKit -> - zeleny(30.08.2013 01:46, ссылка)
- О, там есть очень интересная ссылка на MMTk: The Memory Manager Toolkit. Папира внутри. Evgeny_CD(30.08.2013 12:10, ссылка)
- еще похожий VMKit -> - zeleny(30.08.2013 01:46, ссылка)
- Спасибо! Спасибо! Спасибо! Супер-подборка! Разбираем все по порядку. - Evgeny_CD(29.08.2013 19:43)
- Excelsior JET -> и другие продукты этой отечественной компании - просто улет! --> Старое обсуждение этой компании - Evgeny_CD(29.08.2013 20:02, ссылка, ссылка)
- А кто сказал, что нативный код будет быстрее? В этих ваших VM наверняка куча run-time проверок, которые и вносят львиную долю задержек при выполнении кода. - SciFi(29.08.2013 14:42)
- я сказал :) а сборщики мусора были и в бинарных языках (для лиспа 100 лет уже существуют компиляторы, а куда там деваются объекты?). потратьте 5 мин - посмотрите что такое байт-код джавы, никаких сборщиков мусора там нет - это сервис "окружения" - ыыыы(29.08.2013 16:14)
- run-time проверки должны быть опцией компилера ЯВУ в байткод. Ибо на верхнем уровне хорошо понятно, что и когда имеет смысл проверять, чтобы VM не проверяла все на свете "на всякий случай". - Evgeny_CD(29.08.2013 14:46)
- Ещё бывают всякие динамические типы, сборщик мусора (и "ползающие" указатели) и прочие фишки. Если всё выключить, то боюсь, что этот супер-пупер язык выродится в обычный C++. - SciFi(29.08.2013 14:49)