The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Rust 1.33"
Отправлено Аноним, 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.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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