Есть новомодный язык Rust типа весь такой быстрый ..безопастный и якобы идеальный для системного программирования и разработки ОС. Как вы думаете есть ли у него перспективы вытеснить C/C++ в области разработки ядра ОС и пр. ???
Все, что может сишечка и плюсы - может и раст. Хочешь писать на расте - пишешь на расте, не хочешь - не пишешь. Какой вопрос еще может быть?
На главной странице официального сайта раст написан ответ на твой вопрос. Зачем тебе нужно, чтобы я тебе об этом говорил? --- Сообщение объединено, 21 фев 2021 ---
Некоторым, кто программирует не ради зарплаты, доставляет изобретать велосипеды. В том числе очередные языки программирования.
Инсталер консольный, ну ладно установилась эта фигня куда не ясно. Можно файловым монитором посмотреть, но проще поиском. Два десятка исполняемых модулей, которые нужно с опциями запускать, семплов нет. Что бы дать оценку нужно увидеть пустой бинарь, какой ртл тянет билдер. Как это сделать не понятно.
Спец не осилил, как сделать хеллоу ворлд на расте, вот это уровень. --- Сообщение объединено, 21 фев 2021 --- Indy_, можешь здесь попробовать, ничего не устанавливая: https://godbolt.org/
Rel, Так а откуда мне знать как это сделать, читать доки там они есть - нафиг нужно почитай сам потом скажи. Я вижу два десятка бинарей с консольным выводом. Которым на вход нужны параметры. Гуй сделать не осилили. Кто же сейчас консольные апп то собирает
Rel, Для визора гуй не нужен, а для ide гуй нужен, если конечно это не компилер какого то доса. > от них хочешь гуя? Мне он не нужен как и эта херня, я просто на сборку хотел посмотреть. Оказалось собрать нельзя по простому.
Для компилятора тоже гуй не нужен, гуй для раста есть в вскоде и интеллижей идее. У визуал студии как бы cl.exe и link.exe тоже консольные утилиты, которые можно отдельно поставить и использовать.
Rel, Так ты не сравнивай известный линкер с какой то не понятной кучей бинарей. Возьми да собери семпл, если можешь посмотреть на качество сборки интересно. яп это билдер, сам язык не имеет значения. Если же там консоли, то можно предполагать что и билдер убогий".
И в дизасме, стало быть, не весь бинарь, а только то, на что ссылки есть. Годнота-то какая. Точно сишечку мерзкую перегонит --- Не влезает весь сорец, чуток больше, чем допустимые 30к символов Код (Text): pub fn max_array(x: &mut [f64; 65536], y: &[f64; 65536]) { for (x, y) in x.iter_mut().zip(y.iter()) { *x = if *y > *x { *y } else { *x }; } } ------------------------------------------------------------- <core::iter::adapters::zip::Zip<A,B> as core::iter::traits::iterator::Iterator>::next: sub rsp, 24 call qword ptr [rip + <core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::next@GOTPCREL] mov qword ptr [rsp + 16], rax mov qword ptr [rsp + 8], rdx mov rax, qword ptr [rsp + 16] mov rdx, qword ptr [rsp + 8] add rsp, 24 ret <core::slice::iter::IterMut<T> as core::iter::adapters::zip::TrustedRandomAccess>::may_have_side_effect: xor eax, eax and al, 1 movzx eax, al ret <core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::new: sub rsp, 88 mov rax, rdi mov qword ptr [rsp + 40], rsi mov qword ptr [rsp + 48], rdx mov qword ptr [rsp + 56], rcx mov qword ptr [rsp + 64], r8 mov rcx, qword ptr [rip + core::iter::adapters::zip::TrustedRandomAccess::size@GOTPCREL] lea rdx, [rsp + 40] mov qword ptr [rsp + 32], rdi mov rdi, rdx mov qword ptr [rsp + 24], rax call rcx mov qword ptr [rsp + 16], rax jmp .LBB2_1 .LBB2_1: mov rax, qword ptr [rip + core::iter::adapters::zip::TrustedRandomAccess::size@GOTPCREL] lea rdi, [rsp + 56] call rax mov qword ptr [rsp + 8], rax jmp .LBB2_2 .LBB2_2: mov rax, qword ptr [rip + core::cmp::min@GOTPCREL] mov rdi, qword ptr [rsp + 16] mov rsi, qword ptr [rsp + 8] call rax mov qword ptr [rsp], rax jmp .LBB2_3 .LBB2_3: mov rax, qword ptr [rsp + 40] mov rcx, qword ptr [rsp + 48] mov rdx, qword ptr [rsp + 56] mov rsi, qword ptr [rsp + 64] mov rdi, qword ptr [rsp + 32] mov qword ptr [rdi], rax mov qword ptr [rdi + 8], rcx mov qword ptr [rdi + 16], rdx mov qword ptr [rdi + 24], rsi mov qword ptr [rdi + 32], 0 mov rax, qword ptr [rsp] mov qword ptr [rdi + 40], rax mov rax, qword ptr [rsp + 24] add rsp, 88 ret .LBB2_4: jmp .LBB2_5 .LBB2_5: jmp .LBB2_6 .LBB2_6: mov rdi, qword ptr [rsp + 72] call _Unwind_Resume@PLT ud2 mov qword ptr [rsp + 72], rax mov dword ptr [rsp + 80], edx jmp .LBB2_4 <core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::next: sub rsp, 120 mov rax, qword ptr [rdi + 32] cmp rax, qword ptr [rdi + 40] mov qword ptr [rsp + 56], rdi jb .LBB3_2 call qword ptr [rip + <core::slice::iter::IterMut<T> as core::iter::adapters::zip::TrustedRandomAccess>::may_have_side_effect@GOTPCREL] mov byte ptr [rsp + 55], al jmp .LBB3_9 .LBB3_2: mov rax, qword ptr [rsp + 56] mov rcx, qword ptr [rax + 32] mov rdx, qword ptr [rax + 32] add rdx, 1 mov qword ptr [rax + 32], rdx mov rdi, rax mov rsi, rcx mov qword ptr [rsp + 40], rcx call qword ptr [rip + <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked@GOTPCREL] mov qword ptr [rsp + 32], rax mov rax, qword ptr [rsp + 56] add rax, 16 mov rcx, qword ptr [rip + <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked@GOTPCREL] mov rdi, rax mov rsi, qword ptr [rsp + 40] call rcx mov qword ptr [rsp + 24], rax jmp .LBB3_4 .LBB3_4: mov rax, qword ptr [rsp + 32] mov qword ptr [rsp + 80], rax mov rcx, qword ptr [rsp + 24] mov qword ptr [rsp + 88], rcx mov rdx, qword ptr [rsp + 80] mov rsi, qword ptr [rsp + 88] mov qword ptr [rsp + 64], rdx mov qword ptr [rsp + 72], rsi jmp .LBB3_16 .LBB3_5: mov byte ptr [rsp + 103], 1 jmp .LBB3_8 .LBB3_6: mov byte ptr [rsp + 103], 0 jmp .LBB3_8 .LBB3_7: mov rax, qword ptr [rsp + 56] mov rcx, qword ptr [rax + 32] mov rdi, rax mov qword ptr [rsp + 16], rcx call qword ptr [rip + core::iter::adapters::zip::TrustedRandomAccess::size@GOTPCREL] mov qword ptr [rsp + 8], rax jmp .LBB3_10 .LBB3_8: test byte ptr [rsp + 103], 1 jne .LBB3_12 jmp .LBB3_11 .LBB3_9: mov al, byte ptr [rsp + 55] test al, 1 jne .LBB3_7 jmp .LBB3_6 .LBB3_10: mov rax, qword ptr [rsp + 16] mov rcx, qword ptr [rsp + 8] cmp rax, rcx jb .LBB3_5 jmp .LBB3_6 .LBB3_11: mov qword ptr [rsp + 64], 0 jmp .LBB3_15 .LBB3_12: mov rax, qword ptr [rsp + 56] mov rcx, qword ptr [rsp + 56] mov rsi, qword ptr [rcx + 32] mov rdi, rax call qword ptr [rip + <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked@GOTPCREL] jmp .LBB3_14 .LBB3_14: mov rax, qword ptr [rsp + 56] mov rcx, qword ptr [rax + 32] add rcx, 1 mov qword ptr [rax + 32], rcx mov qword ptr [rsp + 64], 0 .LBB3_15: jmp .LBB3_16 .LBB3_16: mov rax, qword ptr [rsp + 64] mov rdx, qword ptr [rsp + 72] add rsp, 120 ret .LBB3_17: jmp .LBB3_18 .LBB3_18: mov rdi, qword ptr [rsp + 104] call _Unwind_Resume@PLT ud2 mov qword ptr [rsp + 104], rax mov dword ptr [rsp + 112], edx jmp .LBB3_17 core::cmp::Ord::min: push rax call qword ptr [rip + core::cmp::min_by@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] pop rcx ret core::cmp::min: push rax call qword ptr [rip + core::cmp::Ord::min@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] pop rcx ret core::cmp::impls::<impl core::cmp::Ord for usize>::cmp: sub rsp, 24 mov rax, qword ptr [rdi] cmp rax, qword ptr [rsi] mov qword ptr [rsp + 8], rdi mov qword ptr [rsp], rsi jb .LBB6_2 mov rax, qword ptr [rsp + 8] mov rcx, qword ptr [rax] mov rdx, qword ptr [rsp] cmp rcx, qword ptr [rdx] je .LBB6_4 jmp .LBB6_3 .LBB6_2: mov byte ptr [rsp + 23], -1 jmp .LBB6_6 .LBB6_3: mov byte ptr [rsp + 23], 1 jmp .LBB6_5 .LBB6_4: mov byte ptr [rsp + 23], 0 .LBB6_5: jmp .LBB6_6 .LBB6_6: mov al, byte ptr [rsp + 23] add rsp, 24 ret core::cmp::min_by: sub rsp, 88 mov qword ptr [rsp + 16], rdi mov qword ptr [rsp + 24], rsi mov byte ptr [rsp + 71], 0 mov byte ptr [rsp + 70], 0 mov byte ptr [rsp + 71], 1 mov byte ptr [rsp + 70], 1 lea rax, [rsp + 16] mov qword ptr [rsp + 48], rax lea rax, [rsp + 24] mov qword ptr [rsp + 56], rax mov rdi, qword ptr [rsp + 48] mov rsi, qword ptr [rsp + 56] call core::ops::function::FnOnce::call_once mov byte ptr [rsp + 15], al jmp .LBB7_1 .LBB7_1: mov al, byte ptr [rsp + 15] mov byte ptr [rsp + 47], al movsx rcx, byte ptr [rsp + 47] add rcx, 1 sub rcx, 2 jb .LBB7_4 jmp .LBB7_15 .LBB7_15: mov byte ptr [rsp + 70], 0 mov rax, qword ptr [rsp + 24] mov qword ptr [rsp + 32], rax jmp .LBB7_5 ud2 .LBB7_4: mov byte ptr [rsp + 71], 0 mov rax, qword ptr [rsp + 16] mov qword ptr [rsp + 32], rax .LBB7_5: test byte ptr [rsp + 70], 1 jne .LBB7_10 .LBB7_6: test byte ptr [rsp + 71], 1 jne .LBB7_11 .LBB7_7: mov rax, qword ptr [rsp + 32] add rsp, 88 ret .LBB7_8: jmp .LBB7_13 .LBB7_9: mov rdi, qword ptr [rsp + 72] call _Unwind_Resume@PLT ud2 .LBB7_10: jmp .LBB7_6 .LBB7_11: jmp .LBB7_7 .LBB7_12: jmp .LBB7_9 .LBB7_13: test byte ptr [rsp + 71], 1 jne .LBB7_12 jmp .LBB7_9 mov qword ptr [rsp + 72], rax mov dword ptr [rsp + 80], edx jmp .LBB7_8 core::num::<impl usize>::wrapping_sub: sub rdi, rsi mov rax, rdi ret core::ops::function::FnOnce::call_once: sub rsp, 24 mov qword ptr [rsp + 8], rdi mov qword ptr [rsp + 16], rsi mov rdi, qword ptr [rsp + 8] mov rsi, qword ptr [rsp + 16] call core::cmp::impls::<impl core::cmp::Ord for usize>::cmp mov byte ptr [rsp + 7], al mov al, byte ptr [rsp + 7] add rsp, 24 ret core::ptr::mut_ptr::<impl *mut T>::wrapping_add: push rax call qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::wrapping_offset@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] pop rcx ret core::ptr::mut_ptr::<impl *mut T>::guaranteed_eq: sub rsp, 2 cmp rdi, rsi sete al and al, 1 mov byte ptr [rsp + 1], al mov al, byte ptr [rsp + 1] mov byte ptr [rsp], al mov al, byte ptr [rsp] and al, 1 movzx eax, al add rsp, 2 ret core::ptr::mut_ptr::<impl *mut T>::wrapping_offset: sub rsp, 16 add rdi, rsi mov qword ptr [rsp + 8], rdi mov rax, qword ptr [rsp + 8] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] add rsp, 16 ret core::ptr::mut_ptr::<impl *mut T>::add: push rax call qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::offset@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] pop rcx ret core::ptr::mut_ptr::<impl *mut T>::offset: sub rsp, 16 shl rsi, 3 add rdi, rsi mov qword ptr [rsp + 8], rdi mov rax, qword ptr [rsp + 8] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] add rsp, 16 ret core::ptr::mut_ptr::<impl *mut T>::is_null: sub rsp, 24 mov qword ptr [rsp + 16], rdi xor eax, eax mov esi, eax mov rdi, qword ptr [rsp + 16] call qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::guaranteed_eq@GOTPCREL] mov byte ptr [rsp + 15], al mov al, byte ptr [rsp + 15] and al, 1 movzx eax, al add rsp, 24 ret core::ptr::non_null::NonNull<T>::new_unchecked: push rax mov qword ptr [rsp], rdi mov rax, qword ptr [rsp] pop rcx ret core::ptr::non_null::NonNull<T>::as_ptr: mov rax, rdi ret core::ptr::const_ptr::<impl *const T>::wrapping_add: push rax call qword ptr [rip + core::ptr::const_ptr::<impl *const T>::wrapping_offset@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] pop rcx ret core::ptr::const_ptr::<impl *const T>::guaranteed_eq: sub rsp, 2 cmp rdi, rsi sete al and al, 1 mov byte ptr [rsp + 1], al mov al, byte ptr [rsp + 1] mov byte ptr [rsp], al mov al, byte ptr [rsp] and al, 1 movzx eax, al add rsp, 2 ret core::ptr::const_ptr::<impl *const T>::wrapping_offset: sub rsp, 16 add rdi, rsi mov qword ptr [rsp + 8], rdi mov rax, qword ptr [rsp + 8] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] add rsp, 16 ret core::ptr::const_ptr::<impl *const T>::add: push rax call qword ptr [rip + core::ptr::const_ptr::<impl *const T>::offset@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] pop rcx ret core::ptr::const_ptr::<impl *const T>::offset: sub rsp, 16 shl rsi, 3 add rdi, rsi mov qword ptr [rsp + 8], rdi mov rax, qword ptr [rsp + 8] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] add rsp, 16 ret core::ptr::const_ptr::<impl *const T>::is_null: sub rsp, 24 mov qword ptr [rsp + 16], rdi xor eax, eax mov esi, eax mov rdi, qword ptr [rsp + 16] call qword ptr [rip + core::ptr::const_ptr::<impl *const T>::guaranteed_eq@GOTPCREL] mov byte ptr [rsp + 15], al mov al, byte ptr [rsp + 15] and al, 1 movzx eax, al add rsp, 24 ret core::iter::traits::iterator::Iterator::zip: sub rsp, 72 mov rax, rdi mov byte ptr [rsp + 55], 0 mov byte ptr [rsp + 55], 1 mov r9, qword ptr [rip + <I as core::iter::traits::collect::IntoIterator>::into_iter@GOTPCREL] mov qword ptr [rsp + 40], rdi mov rdi, rcx mov qword ptr [rsp + 32], rsi mov rsi, r8 mov qword ptr [rsp + 24], rdx mov qword ptr [rsp + 16], rax call r9 mov qword ptr [rsp + 8], rdx mov qword ptr [rsp], rax jmp .LBB24_1 .LBB24_1: mov byte ptr [rsp + 55], 0 mov rax, qword ptr [rip + core::iter::adapters::zip::Zip<A,B>::new@GOTPCREL] mov rdi, qword ptr [rsp + 40] mov rsi, qword ptr [rsp + 32] mov rdx, qword ptr [rsp + 24] mov rcx, qword ptr [rsp] mov r8, qword ptr [rsp + 8] call rax jmp .LBB24_2 .LBB24_2: mov byte ptr [rsp + 55], 0 mov rax, qword ptr [rsp + 16] add rsp, 72 ret .LBB24_3: mov rdi, qword ptr [rsp + 56] call _Unwind_Resume@PLT ud2 .LBB24_4: jmp .LBB24_3 .LBB24_5: test byte ptr [rsp + 55], 1 jne .LBB24_4 jmp .LBB24_3 mov qword ptr [rsp + 56], rax mov dword ptr [rsp + 64], edx jmp .LBB24_5 core::iter::adapters::zip::Zip<A,B>::new: push rax mov rax, rdi mov qword ptr [rsp], rax call qword ptr [rip + <core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::new@GOTPCREL] mov rax, qword ptr [rsp] pop rcx ret core::iter::adapters::zip::TrustedRandomAccess::size: sub rsp, 40 lea rax, [rsp + 16] mov qword ptr [rsp + 8], rdi mov rdi, rax mov rsi, qword ptr [rsp + 8] call qword ptr [rip + <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::size_hint@GOTPCREL] mov rax, qword ptr [rsp + 16] add rsp, 40 ret core::iter::adapters::zip::TrustedRandomAccess::size: sub rsp, 40 lea rax, [rsp + 16] mov qword ptr [rsp + 8], rdi mov rdi, rax mov rsi, qword ptr [rsp + 8] call qword ptr [rip + <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::size_hint@GOTPCREL] mov rax, qword ptr [rsp + 16] add rsp, 40 ret core::slice::<impl [T]>::as_mut_ptr: mov rax, rdi ret core::slice::<impl [T]>::len: sub rsp, 16 mov qword ptr [rsp], rdi mov qword ptr [rsp + 8], rsi mov rax, qword ptr [rsp + 8] add rsp, 16 ret core::slice::<impl [T]>::iter: sub rsp, 24 call qword ptr [rip + core::slice::iter::Iter<T>::new@GOTPCREL] mov qword ptr [rsp + 16], rax mov qword ptr [rsp + 8], rdx mov rax, qword ptr [rsp + 16] mov rdx, qword ptr [rsp + 8] add rsp, 24 ret core::slice::<impl [T]>::as_ptr: mov rax, rdi ret core::slice::<impl [T]>::iter_mut: sub rsp, 24 call qword ptr [rip + core::slice::iter::IterMut<T>::new@GOTPCREL] mov qword ptr [rsp + 16], rax mov qword ptr [rsp + 8], rdx mov rax, qword ptr [rsp + 16] mov rdx, qword ptr [rsp + 8] add rsp, 24 ret core::slice::iter::Iter<T>::new: sub rsp, 88 mov qword ptr [rsp + 56], rdi mov qword ptr [rsp + 48], rsi call qword ptr [rip + core::slice::<impl [T]>::as_ptr@GOTPCREL] mov qword ptr [rsp + 40], rax mov rdi, qword ptr [rsp + 40] call qword ptr [rip + core::ptr::const_ptr::<impl *const T>::is_null@GOTPCREL] jmp .LBB33_4 .LBB33_4: mov eax, 8 cmp rax, 0 je .LBB33_6 mov rdi, qword ptr [rsp + 56] mov rsi, qword ptr [rsp + 48] call qword ptr [rip + core::slice::<impl [T]>::len@GOTPCREL] mov qword ptr [rsp + 32], rax jmp .LBB33_9 .LBB33_6: mov rax, qword ptr [rsp + 40] mov rdi, qword ptr [rsp + 56] mov rsi, qword ptr [rsp + 48] mov qword ptr [rsp + 24], rax call qword ptr [rip + core::slice::<impl [T]>::len@GOTPCREL] mov qword ptr [rsp + 16], rax mov rdi, qword ptr [rsp + 24] mov rsi, qword ptr [rsp + 16] call qword ptr [rip + core::ptr::const_ptr::<impl *const T>::wrapping_add@GOTPCREL] mov qword ptr [rsp + 8], rax mov rax, qword ptr [rsp + 8] mov qword ptr [rsp + 80], rax jmp .LBB33_11 .LBB33_9: mov rdi, qword ptr [rsp + 40] mov rsi, qword ptr [rsp + 32] call qword ptr [rip + core::ptr::const_ptr::<impl *const T>::add@GOTPCREL] mov qword ptr [rsp + 80], rax jmp .LBB33_11 .LBB33_11: mov rdi, qword ptr [rsp + 40] call qword ptr [rip + core::ptr::non_null::NonNull<T>::new_unchecked@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp + 80] mov rcx, qword ptr [rsp] mov qword ptr [rsp + 64], rcx mov qword ptr [rsp + 72], rax mov rax, qword ptr [rsp + 64] mov rdx, qword ptr [rsp + 72] add rsp, 88 ret core::slice::iter::IterMut<T>::new: sub rsp, 88 mov qword ptr [rsp + 56], rdi mov qword ptr [rsp + 48], rsi call qword ptr [rip + core::slice::<impl [T]>::as_mut_ptr@GOTPCREL] mov qword ptr [rsp + 40], rax mov rdi, qword ptr [rsp + 40] call qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::is_null@GOTPCREL] jmp .LBB34_4 .LBB34_4: mov eax, 8 cmp rax, 0 je .LBB34_6 mov rdi, qword ptr [rsp + 56] mov rsi, qword ptr [rsp + 48] call qword ptr [rip + core::slice::<impl [T]>::len@GOTPCREL] mov qword ptr [rsp + 32], rax jmp .LBB34_9 .LBB34_6: mov rax, qword ptr [rsp + 40] mov rdi, qword ptr [rsp + 56] mov rsi, qword ptr [rsp + 48] mov qword ptr [rsp + 24], rax call qword ptr [rip + core::slice::<impl [T]>::len@GOTPCREL] mov qword ptr [rsp + 16], rax mov rdi, qword ptr [rsp + 24] mov rsi, qword ptr [rsp + 16] call qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::wrapping_add@GOTPCREL] mov qword ptr [rsp + 8], rax mov rax, qword ptr [rsp + 8] mov qword ptr [rsp + 80], rax jmp .LBB34_11 .LBB34_9: mov rdi, qword ptr [rsp + 40] mov rsi, qword ptr [rsp + 32] call qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::add@GOTPCREL] mov qword ptr [rsp + 80], rax jmp .LBB34_11 .LBB34_11: mov rdi, qword ptr [rsp + 40] call qword ptr [rip + core::ptr::non_null::NonNull<T>::new_unchecked@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp + 80] mov rcx, qword ptr [rsp] mov qword ptr [rsp + 64], rcx mov qword ptr [rsp + 72], rax mov rax, qword ptr [rsp + 64] mov rdx, qword ptr [rsp + 72] add rsp, 88 ret <I as core::iter::traits::collect::IntoIterator>::into_iter: push rax mov rax, rdi mov edx, 48 mov qword ptr [rsp], rax call memcpy@PLT mov rax, qword ptr [rsp] pop rcx ret <I as core::iter::traits::collect::IntoIterator>::into_iter: mov rax, rdi mov rdx, rsi ret <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked: sub rsp, 24 mov rdi, qword ptr [rdi] mov qword ptr [rsp + 16], rsi call qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL] mov qword ptr [rsp + 8], rax mov rdi, qword ptr [rsp + 8] mov rsi, qword ptr [rsp + 16] call qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::add@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] add rsp, 24 ret <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::size_hint: sub rsp, 104 mov rax, rdi mov rcx, qword ptr [rsi] mov qword ptr [rsp + 64], rdi mov rdi, rcx mov qword ptr [rsp + 56], rsi mov qword ptr [rsp + 48], rax mov qword ptr [rsp + 40], rcx call qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL] jmp .LBB38_2 .LBB38_2: mov eax, 8 cmp rax, 0 je .LBB38_4 mov rax, qword ptr [rsp + 56] mov rcx, qword ptr [rax + 8] mov rdi, qword ptr [rsp + 40] mov qword ptr [rsp + 32], rcx call qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL] mov qword ptr [rsp + 24], rax jmp .LBB38_7 .LBB38_4: mov rax, qword ptr [rsp + 56] mov rdi, qword ptr [rax + 8] mov rcx, qword ptr [rsp + 40] mov qword ptr [rsp + 16], rdi mov rdi, rcx call qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL] mov qword ptr [rsp + 8], rax mov rdi, qword ptr [rsp + 16] mov rsi, qword ptr [rsp + 8] call core::num::<impl usize>::wrapping_sub mov qword ptr [rsp + 72], rax jmp .LBB38_10 .LBB38_7: mov rax, qword ptr [rsp + 32] mov rcx, qword ptr [rsp + 24] sub rax, rcx mov qword ptr [rsp + 96], rax mov rax, qword ptr [rsp + 96] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] shr rax, 3 mov qword ptr [rsp + 72], rax jmp .LBB38_10 .LBB38_10: mov rax, qword ptr [rsp + 72] mov rcx, qword ptr [rsp + 72] mov qword ptr [rsp + 88], rcx mov qword ptr [rsp + 80], 1 mov rcx, qword ptr [rsp + 64] mov qword ptr [rcx], rax mov rax, qword ptr [rsp + 80] mov rdx, qword ptr [rsp + 88] mov qword ptr [rcx + 8], rax mov qword ptr [rcx + 16], rdx mov rax, qword ptr [rsp + 48] add rsp, 104 ret <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked: sub rsp, 24 mov rdi, qword ptr [rdi] mov qword ptr [rsp + 16], rsi call qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL] mov qword ptr [rsp + 8], rax mov rdi, qword ptr [rsp + 8] mov rsi, qword ptr [rsp + 16] call qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::add@GOTPCREL] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] add rsp, 24 ret <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::size_hint: sub rsp, 104 mov rax, rdi mov rcx, qword ptr [rsi] mov qword ptr [rsp + 64], rdi mov rdi, rcx mov qword ptr [rsp + 56], rsi mov qword ptr [rsp + 48], rax mov qword ptr [rsp + 40], rcx call qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL] jmp .LBB40_2 .LBB40_2: mov eax, 8 cmp rax, 0 je .LBB40_4 mov rax, qword ptr [rsp + 56] mov rcx, qword ptr [rax + 8] mov rdi, qword ptr [rsp + 40] mov qword ptr [rsp + 32], rcx call qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL] mov qword ptr [rsp + 24], rax jmp .LBB40_7 .LBB40_4: mov rax, qword ptr [rsp + 56] mov rdi, qword ptr [rax + 8] mov rcx, qword ptr [rsp + 40] mov qword ptr [rsp + 16], rdi mov rdi, rcx call qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL] mov qword ptr [rsp + 8], rax mov rdi, qword ptr [rsp + 16] mov rsi, qword ptr [rsp + 8] call core::num::<impl usize>::wrapping_sub mov qword ptr [rsp + 72], rax jmp .LBB40_10 .LBB40_7: mov rax, qword ptr [rsp + 32] mov rcx, qword ptr [rsp + 24] sub rax, rcx mov qword ptr [rsp + 96], rax mov rax, qword ptr [rsp + 96] mov qword ptr [rsp], rax mov rax, qword ptr [rsp] shr rax, 3 mov qword ptr [rsp + 72], rax jmp .LBB40_10 .LBB40_10: mov rax, qword ptr [rsp + 72] mov rcx, qword ptr [rsp + 72] mov qword ptr [rsp + 88], rcx mov qword ptr [rsp + 80], 1 mov rcx, qword ptr [rsp + 64] mov qword ptr [rcx], rax mov rax, qword ptr [rsp + 80] mov rdx, qword ptr [rsp + 88] mov qword ptr [rcx + 8], rax mov qword ptr [rcx + 16], rdx mov rax, qword ptr [rsp + 48] add rsp, 104 ret ...
rmn, > ничего не устанавливая: https://godbolt.org/ Текстового редактора нет, но я к примеру привык в блокноте код писать. Но сейчас такой аскетизм врядле уместен.
Cl.exe - это компилятор, а не линкер, и у него тоже бинарей навалом, так что сравнение всегда уместно. Ну ты же мне не даешь последний семпл своего чудо визора, зачем мне тебе с семплом раста помогать? Так а что за проблема, я не понял. Я же тебе написал, зайди на тот сайт, напиши код и посмотри, какой компиль асм-листинг выплюнет. Зачем тебе семпл? Асм-листинг куда нагляднее же.
дело не в бинарей навалом, компилятор просто генерит объектный код для каждого модуля, а вот линкер уже должен все перекрёстные связи меж модулями собрать и загенерить в итоге рабочее ехе --- Сообщение объединено, 21 фев 2021 --- блин, ты реально в инсте преподаешь?