The OpenNET Project / Index page

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



"Выпуск языка программирования Rust 1.33"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск языка программирования Rust 1.33" –1 +/
Сообщение от Аноним (132), 04-Мрт-19, 08:57 
>>>> А разве кто-то утверждал, что это тоже на Rust?
>>> А кто утверждал-то, что оно полностью на Rust?
>> В #110 анон утверждает, требуя от меня аналогичный код на плюсах для
>> Там не инлайн, если уж заниматься буквоедством, а вполне файлы *.s
> Если заниматься буквоедством, то в GRUB точно то же кино с файлами.

Э-э, это конечно же, очень-очень интересно … но
причем тут GRUB? :)

> При этом MS VC++ инлайном ни в армщину, ни в 64
> бита не умеет, да и вообще по стандарту:
>> The asm declaration is conditionally-supported; its meaning is implementation-defined.

Повторюсь (было в сноске), поддержка исключений по стандарту не обязательна. Без них остаётся чистый С++. (впрочем, поддержку исключений GCC можно в упомянутую реализацию добавить).

>> Вот пример вполне практического "zero-runtime" на С++ https://github.com/icestudent/ontl/tree/master/ntl/rtl
> > К бутлоадерам отношения не имеет.
>> Асм там может потребоваться* - обратите, пожалуйста, на этот момент внимание -
>> потому что тамошний компилятор для поддержки исключений генерирует определённые структуры,
>> для работы с которыми интринсиков недостаточно.
> А, это такое замысловатое "да, но пока еще нет, но почти что
> да, только пока нет"? :)

Это такое прямое и вполне прикладное применение "на С++ можно писать драйвера (даже несмотря на заявления производителя тамошней ОС об обратном)".

На Rust можно? Есть примеры? Бутлоадеры и студенческие ОС это очень интересно, но немножко ближе к теории, чем к практике.

> Кстати, если уж буквоедствовать, то интринсики (которые вроде как и в ржавчине
> не один год имеются) у нас в каком стандарте-то прописаны?

Так нет их в исходниках (вместо них авторам пришлось использовать асм - в опциональной части).

>> Теперь возвращаемся к исходной посылке "рантайм LLVM, причем, например, паники там реализованы
>> с использованием механизма исключений C++".
>> Так вот мне, что бы считать "реализовать можно" без "наверное таки", желательно
>> увидеть подобную реализацию
> https://os.phil-opp.com/freestanding-rust-binary/
> https://github.com/phil-opp/blog_os/blob/post-01/src/main.rs
> Бинарник в пару KB (на самом деле, заполнен нулями чуть менее чем
> полностью), без зависимостей, нормально собирается и исправно запускается, демонстрируя
> JMP@here в gdb.

Спасибо. Вот только бинарник ничего не делает.

>[оверквотинг удален]
>         movq    
> %rsp, %rbp
>         .p2align    
>     4, 0x90
> .LBB0_1:
>         jmp    
>  .LBB0_1
> .Lfunc_end0:
>         .size   _start,
> .Lfunc_end0-_start

Вот тут обозначен диапазон адресов, где может быть сгенерировано исключение?
Что делать с этим в _произвольном_ месте в ядре? Вот в чём вопрос.

>[оверквотинг удален]
> .LBB1_1:
>         jmp    
>  .LBB1_1
> .Lfunc_end1:
>         .size   rust_begin_unwind,
> .Lfunc_end1-rust_begin_unwind
>         .section    
>     ".note.GNU-stack","",@progbits
>
> очень смахивет на q.e.d.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск языка программирования Rust 1.33, opennews, 02-Мрт-19, 13:17  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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