The OpenNET Project / Index page

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



"Выпуск языка программирования Rust 1.33"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Есть идеи по улучшению форума и сайта ? Пишите.
. "Выпуск языка программирования Rust 1.33" +1 +/
Сообщение от Аноним84701 (ok), 03-Мрт-19, 18:33 
>>> А разве кто-то утверждал, что это тоже на Rust?
>> А кто утверждал-то, что оно полностью на Rust?
> В #110 анон утверждает, требуя от меня аналогичный код на плюсах для
> опровержения его гипотезы. :)

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


> Там не инлайн, если уж заниматься буквоедством, а вполне файлы *.s

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

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

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

> Теперь возвращаемся к исходной посылке "рантайм 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.

cargo rustc -- -Clink-arg=-nostartfiles
Тот же cargo rustc -- -Clink-arg=-nostartfiles --emit asm
дает выхлоп:


        .text
        .file   "blog_os.6pwfxw6d-cgu.0"
        .section        .text._start,"ax",@progbits
        .globl  _start
        .p2align        4, 0x90
        .type   _start,@function
_start:
        pushq   %rbp
        movq    %rsp, %rbp
        .p2align        4, 0x90
.LBB0_1:
        jmp     .LBB0_1
.Lfunc_end0:
        .size   _start, .Lfunc_end0-_start

        .section        .text.rust_begin_unwind,"ax",@progbits
        .hidden rust_begin_unwind
        .globl  rust_begin_unwind
        .p2align        4, 0x90
        .type   rust_begin_unwind,@function
rust_begin_unwind:
        pushq   %rbp
        movq    %rsp, %rbp
        .p2align        4, 0x90
.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
Добавить, Поддержать, Вебмастеру