Ржавчина (Rust)

Тема в разделе "WASM.BEGINNERS", создана пользователем asmlamo, 21 фев 2021.

  1. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.727
    Есть новомодный язык Rust типа весь такой быстрый ..безопастный и якобы идеальный для системного программирования и разработки ОС.
    Как вы думаете есть ли у него перспективы вытеснить C/C++ в области разработки ядра ОС и пр. ???
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
    Канеш, как же жить без холиваров.
     
  3. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.327
    Конечно же, нет :)
     
  4. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.727
    А более развернуто можно ?
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
    Все, что может сишечка и плюсы - может и раст. Хочешь писать на расте - пишешь на расте, не хочешь - не пишешь. Какой вопрос еще может быть?
     
  6. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.727
    А зачем тогда придумали Раст ?
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
    На главной странице официального сайта раст написан ответ на твой вопрос. Зачем тебе нужно, чтобы я тебе об этом говорил?
    --- Сообщение объединено, 21 фев 2021 ---
     
  8. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.327
    Некоторым, кто программирует не ради зарплаты, доставляет изобретать велосипеды. В том числе очередные языки программирования.
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
  10. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Инсталер консольный, ну ладно установилась эта фигня куда не ясно. Можно файловым монитором посмотреть, но проще поиском. Два десятка исполняемых модулей, которые нужно с опциями запускать, семплов нет. Что бы дать оценку нужно увидеть пустой бинарь, какой ртл тянет билдер. Как это сделать не понятно.
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
    Спец не осилил, как сделать хеллоу ворлд на расте, вот это уровень.
    --- Сообщение объединено, 21 фев 2021 ---

    Indy_, можешь здесь попробовать, ничего не устанавливая: https://godbolt.org/
     
  12. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Так а откуда мне знать как это сделать, читать доки там они есть - нафиг нужно почитай сам потом скажи. Я вижу два десятка бинарей с консольным выводом. Которым на вход нужны параметры. Гуй сделать не осилили. Кто же сейчас консольные апп то собирает :bad:
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
    Ну так ты сам гуй для своего визора сделать не осилил, а от них хочешь гуя?
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Для визора гуй не нужен, а для ide гуй нужен, если конечно это не компилер какого то доса.

    > от них хочешь гуя?

    Мне он не нужен как и эта херня, я просто на сборку хотел посмотреть. Оказалось собрать нельзя по простому.
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
    Для компилятора тоже гуй не нужен, гуй для раста есть в вскоде и интеллижей идее. У визуал студии как бы cl.exe и link.exe тоже консольные утилиты, которые можно отдельно поставить и использовать.
     
  16. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Так ты не сравнивай известный линкер с какой то не понятной кучей бинарей. Возьми да собери семпл, если можешь посмотреть на качество сборки интересно. яп это билдер, сам язык не имеет значения. Если же там консоли, то можно предполагать что и билдер убогий".
     
  17. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.327
    И в дизасме, стало быть, не весь бинарь, а только то, на что ссылки есть. Годнота-то какая. Точно сишечку мерзкую перегонит :)

    ---
    Не влезает весь сорец, чуток больше, чем допустимые 30к символов :)
    Код (Text):
    1. pub fn max_array(x: &mut [f64; 65536], y: &[f64; 65536]) {
    2.     for (x, y) in x.iter_mut().zip(y.iter()) {
    3.         *x = if *y > *x { *y } else { *x };
    4.     }
    5. }
    6.  
    7. -------------------------------------------------------------
    8.  
    9. <core::iter::adapters::zip::Zip<A,B> as core::iter::traits::iterator::Iterator>::next:
    10.         sub     rsp, 24
    11.         call    qword ptr [rip + <core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::next@GOTPCREL]
    12.         mov     qword ptr [rsp + 16], rax
    13.         mov     qword ptr [rsp + 8], rdx
    14.         mov     rax, qword ptr [rsp + 16]
    15.         mov     rdx, qword ptr [rsp + 8]
    16.         add     rsp, 24
    17.         ret
    18.  
    19. <core::slice::iter::IterMut<T> as core::iter::adapters::zip::TrustedRandomAccess>::may_have_side_effect:
    20.         xor     eax, eax
    21.         and     al, 1
    22.         movzx   eax, al
    23.         ret
    24.  
    25. <core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::new:
    26.         sub     rsp, 88
    27.         mov     rax, rdi
    28.         mov     qword ptr [rsp + 40], rsi
    29.         mov     qword ptr [rsp + 48], rdx
    30.         mov     qword ptr [rsp + 56], rcx
    31.         mov     qword ptr [rsp + 64], r8
    32.         mov     rcx, qword ptr [rip + core::iter::adapters::zip::TrustedRandomAccess::size@GOTPCREL]
    33.         lea     rdx, [rsp + 40]
    34.         mov     qword ptr [rsp + 32], rdi
    35.         mov     rdi, rdx
    36.         mov     qword ptr [rsp + 24], rax
    37.         call    rcx
    38.         mov     qword ptr [rsp + 16], rax
    39.         jmp     .LBB2_1
    40. .LBB2_1:
    41.         mov     rax, qword ptr [rip + core::iter::adapters::zip::TrustedRandomAccess::size@GOTPCREL]
    42.         lea     rdi, [rsp + 56]
    43.         call    rax
    44.         mov     qword ptr [rsp + 8], rax
    45.         jmp     .LBB2_2
    46. .LBB2_2:
    47.         mov     rax, qword ptr [rip + core::cmp::min@GOTPCREL]
    48.         mov     rdi, qword ptr [rsp + 16]
    49.         mov     rsi, qword ptr [rsp + 8]
    50.         call    rax
    51.         mov     qword ptr [rsp], rax
    52.         jmp     .LBB2_3
    53. .LBB2_3:
    54.         mov     rax, qword ptr [rsp + 40]
    55.         mov     rcx, qword ptr [rsp + 48]
    56.         mov     rdx, qword ptr [rsp + 56]
    57.         mov     rsi, qword ptr [rsp + 64]
    58.         mov     rdi, qword ptr [rsp + 32]
    59.         mov     qword ptr [rdi], rax
    60.         mov     qword ptr [rdi + 8], rcx
    61.         mov     qword ptr [rdi + 16], rdx
    62.         mov     qword ptr [rdi + 24], rsi
    63.         mov     qword ptr [rdi + 32], 0
    64.         mov     rax, qword ptr [rsp]
    65.         mov     qword ptr [rdi + 40], rax
    66.         mov     rax, qword ptr [rsp + 24]
    67.         add     rsp, 88
    68.         ret
    69. .LBB2_4:
    70.         jmp     .LBB2_5
    71. .LBB2_5:
    72.         jmp     .LBB2_6
    73. .LBB2_6:
    74.         mov     rdi, qword ptr [rsp + 72]
    75.         call    _Unwind_Resume@PLT
    76.         ud2
    77.         mov     qword ptr [rsp + 72], rax
    78.         mov     dword ptr [rsp + 80], edx
    79.         jmp     .LBB2_4
    80.  
    81. <core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::next:
    82.         sub     rsp, 120
    83.         mov     rax, qword ptr [rdi + 32]
    84.         cmp     rax, qword ptr [rdi + 40]
    85.         mov     qword ptr [rsp + 56], rdi
    86.         jb      .LBB3_2
    87.         call    qword ptr [rip + <core::slice::iter::IterMut<T> as core::iter::adapters::zip::TrustedRandomAccess>::may_have_side_effect@GOTPCREL]
    88.         mov     byte ptr [rsp + 55], al
    89.         jmp     .LBB3_9
    90. .LBB3_2:
    91.         mov     rax, qword ptr [rsp + 56]
    92.         mov     rcx, qword ptr [rax + 32]
    93.         mov     rdx, qword ptr [rax + 32]
    94.         add     rdx, 1
    95.         mov     qword ptr [rax + 32], rdx
    96.         mov     rdi, rax
    97.         mov     rsi, rcx
    98.         mov     qword ptr [rsp + 40], rcx
    99.         call    qword ptr [rip + <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked@GOTPCREL]
    100.         mov     qword ptr [rsp + 32], rax
    101.         mov     rax, qword ptr [rsp + 56]
    102.         add     rax, 16
    103.         mov     rcx, qword ptr [rip + <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked@GOTPCREL]
    104.         mov     rdi, rax
    105.         mov     rsi, qword ptr [rsp + 40]
    106.         call    rcx
    107.         mov     qword ptr [rsp + 24], rax
    108.         jmp     .LBB3_4
    109. .LBB3_4:
    110.         mov     rax, qword ptr [rsp + 32]
    111.         mov     qword ptr [rsp + 80], rax
    112.         mov     rcx, qword ptr [rsp + 24]
    113.         mov     qword ptr [rsp + 88], rcx
    114.         mov     rdx, qword ptr [rsp + 80]
    115.         mov     rsi, qword ptr [rsp + 88]
    116.         mov     qword ptr [rsp + 64], rdx
    117.         mov     qword ptr [rsp + 72], rsi
    118.         jmp     .LBB3_16
    119. .LBB3_5:
    120.         mov     byte ptr [rsp + 103], 1
    121.         jmp     .LBB3_8
    122. .LBB3_6:
    123.         mov     byte ptr [rsp + 103], 0
    124.         jmp     .LBB3_8
    125. .LBB3_7:
    126.         mov     rax, qword ptr [rsp + 56]
    127.         mov     rcx, qword ptr [rax + 32]
    128.         mov     rdi, rax
    129.         mov     qword ptr [rsp + 16], rcx
    130.         call    qword ptr [rip + core::iter::adapters::zip::TrustedRandomAccess::size@GOTPCREL]
    131.         mov     qword ptr [rsp + 8], rax
    132.         jmp     .LBB3_10
    133. .LBB3_8:
    134.         test    byte ptr [rsp + 103], 1
    135.         jne     .LBB3_12
    136.         jmp     .LBB3_11
    137. .LBB3_9:
    138.         mov     al, byte ptr [rsp + 55]
    139.         test    al, 1
    140.         jne     .LBB3_7
    141.         jmp     .LBB3_6
    142. .LBB3_10:
    143.         mov     rax, qword ptr [rsp + 16]
    144.         mov     rcx, qword ptr [rsp + 8]
    145.         cmp     rax, rcx
    146.         jb      .LBB3_5
    147.         jmp     .LBB3_6
    148. .LBB3_11:
    149.         mov     qword ptr [rsp + 64], 0
    150.         jmp     .LBB3_15
    151. .LBB3_12:
    152.         mov     rax, qword ptr [rsp + 56]
    153.         mov     rcx, qword ptr [rsp + 56]
    154.         mov     rsi, qword ptr [rcx + 32]
    155.         mov     rdi, rax
    156.         call    qword ptr [rip + <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked@GOTPCREL]
    157.         jmp     .LBB3_14
    158. .LBB3_14:
    159.         mov     rax, qword ptr [rsp + 56]
    160.         mov     rcx, qword ptr [rax + 32]
    161.         add     rcx, 1
    162.         mov     qword ptr [rax + 32], rcx
    163.         mov     qword ptr [rsp + 64], 0
    164. .LBB3_15:
    165.         jmp     .LBB3_16
    166. .LBB3_16:
    167.         mov     rax, qword ptr [rsp + 64]
    168.         mov     rdx, qword ptr [rsp + 72]
    169.         add     rsp, 120
    170.         ret
    171. .LBB3_17:
    172.         jmp     .LBB3_18
    173. .LBB3_18:
    174.         mov     rdi, qword ptr [rsp + 104]
    175.         call    _Unwind_Resume@PLT
    176.         ud2
    177.         mov     qword ptr [rsp + 104], rax
    178.         mov     dword ptr [rsp + 112], edx
    179.         jmp     .LBB3_17
    180.  
    181. core::cmp::Ord::min:
    182.         push    rax
    183.         call    qword ptr [rip + core::cmp::min_by@GOTPCREL]
    184.         mov     qword ptr [rsp], rax
    185.         mov     rax, qword ptr [rsp]
    186.         pop     rcx
    187.         ret
    188.  
    189. core::cmp::min:
    190.         push    rax
    191.         call    qword ptr [rip + core::cmp::Ord::min@GOTPCREL]
    192.         mov     qword ptr [rsp], rax
    193.         mov     rax, qword ptr [rsp]
    194.         pop     rcx
    195.         ret
    196.  
    197. core::cmp::impls::<impl core::cmp::Ord for usize>::cmp:
    198.         sub     rsp, 24
    199.         mov     rax, qword ptr [rdi]
    200.         cmp     rax, qword ptr [rsi]
    201.         mov     qword ptr [rsp + 8], rdi
    202.         mov     qword ptr [rsp], rsi
    203.         jb      .LBB6_2
    204.         mov     rax, qword ptr [rsp + 8]
    205.         mov     rcx, qword ptr [rax]
    206.         mov     rdx, qword ptr [rsp]
    207.         cmp     rcx, qword ptr [rdx]
    208.         je      .LBB6_4
    209.         jmp     .LBB6_3
    210. .LBB6_2:
    211.         mov     byte ptr [rsp + 23], -1
    212.         jmp     .LBB6_6
    213. .LBB6_3:
    214.         mov     byte ptr [rsp + 23], 1
    215.         jmp     .LBB6_5
    216. .LBB6_4:
    217.         mov     byte ptr [rsp + 23], 0
    218. .LBB6_5:
    219.         jmp     .LBB6_6
    220. .LBB6_6:
    221.         mov     al, byte ptr [rsp + 23]
    222.         add     rsp, 24
    223.         ret
    224.  
    225. core::cmp::min_by:
    226.         sub     rsp, 88
    227.         mov     qword ptr [rsp + 16], rdi
    228.         mov     qword ptr [rsp + 24], rsi
    229.         mov     byte ptr [rsp + 71], 0
    230.         mov     byte ptr [rsp + 70], 0
    231.         mov     byte ptr [rsp + 71], 1
    232.         mov     byte ptr [rsp + 70], 1
    233.         lea     rax, [rsp + 16]
    234.         mov     qword ptr [rsp + 48], rax
    235.         lea     rax, [rsp + 24]
    236.         mov     qword ptr [rsp + 56], rax
    237.         mov     rdi, qword ptr [rsp + 48]
    238.         mov     rsi, qword ptr [rsp + 56]
    239.         call    core::ops::function::FnOnce::call_once
    240.         mov     byte ptr [rsp + 15], al
    241.         jmp     .LBB7_1
    242. .LBB7_1:
    243.         mov     al, byte ptr [rsp + 15]
    244.         mov     byte ptr [rsp + 47], al
    245.         movsx   rcx, byte ptr [rsp + 47]
    246.         add     rcx, 1
    247.         sub     rcx, 2
    248.         jb      .LBB7_4
    249.         jmp     .LBB7_15
    250. .LBB7_15:
    251.         mov     byte ptr [rsp + 70], 0
    252.         mov     rax, qword ptr [rsp + 24]
    253.         mov     qword ptr [rsp + 32], rax
    254.         jmp     .LBB7_5
    255.         ud2
    256. .LBB7_4:
    257.         mov     byte ptr [rsp + 71], 0
    258.         mov     rax, qword ptr [rsp + 16]
    259.         mov     qword ptr [rsp + 32], rax
    260. .LBB7_5:
    261.         test    byte ptr [rsp + 70], 1
    262.         jne     .LBB7_10
    263. .LBB7_6:
    264.         test    byte ptr [rsp + 71], 1
    265.         jne     .LBB7_11
    266. .LBB7_7:
    267.         mov     rax, qword ptr [rsp + 32]
    268.         add     rsp, 88
    269.         ret
    270. .LBB7_8:
    271.         jmp     .LBB7_13
    272. .LBB7_9:
    273.         mov     rdi, qword ptr [rsp + 72]
    274.         call    _Unwind_Resume@PLT
    275.         ud2
    276. .LBB7_10:
    277.         jmp     .LBB7_6
    278. .LBB7_11:
    279.         jmp     .LBB7_7
    280. .LBB7_12:
    281.         jmp     .LBB7_9
    282. .LBB7_13:
    283.         test    byte ptr [rsp + 71], 1
    284.         jne     .LBB7_12
    285.         jmp     .LBB7_9
    286.         mov     qword ptr [rsp + 72], rax
    287.         mov     dword ptr [rsp + 80], edx
    288.         jmp     .LBB7_8
    289.  
    290. core::num::<impl usize>::wrapping_sub:
    291.         sub     rdi, rsi
    292.         mov     rax, rdi
    293.         ret
    294.  
    295. core::ops::function::FnOnce::call_once:
    296.         sub     rsp, 24
    297.         mov     qword ptr [rsp + 8], rdi
    298.         mov     qword ptr [rsp + 16], rsi
    299.         mov     rdi, qword ptr [rsp + 8]
    300.         mov     rsi, qword ptr [rsp + 16]
    301.         call    core::cmp::impls::<impl core::cmp::Ord for usize>::cmp
    302.         mov     byte ptr [rsp + 7], al
    303.         mov     al, byte ptr [rsp + 7]
    304.         add     rsp, 24
    305.         ret
    306.  
    307. core::ptr::mut_ptr::<impl *mut T>::wrapping_add:
    308.         push    rax
    309.         call    qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::wrapping_offset@GOTPCREL]
    310.         mov     qword ptr [rsp], rax
    311.         mov     rax, qword ptr [rsp]
    312.         pop     rcx
    313.         ret
    314.  
    315. core::ptr::mut_ptr::<impl *mut T>::guaranteed_eq:
    316.         sub     rsp, 2
    317.         cmp     rdi, rsi
    318.         sete    al
    319.         and     al, 1
    320.         mov     byte ptr [rsp + 1], al
    321.         mov     al, byte ptr [rsp + 1]
    322.         mov     byte ptr [rsp], al
    323.         mov     al, byte ptr [rsp]
    324.         and     al, 1
    325.         movzx   eax, al
    326.         add     rsp, 2
    327.         ret
    328.  
    329. core::ptr::mut_ptr::<impl *mut T>::wrapping_offset:
    330.         sub     rsp, 16
    331.         add     rdi, rsi
    332.         mov     qword ptr [rsp + 8], rdi
    333.         mov     rax, qword ptr [rsp + 8]
    334.         mov     qword ptr [rsp], rax
    335.         mov     rax, qword ptr [rsp]
    336.         add     rsp, 16
    337.         ret
    338.  
    339. core::ptr::mut_ptr::<impl *mut T>::add:
    340.         push    rax
    341.         call    qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::offset@GOTPCREL]
    342.         mov     qword ptr [rsp], rax
    343.         mov     rax, qword ptr [rsp]
    344.         pop     rcx
    345.         ret
    346.  
    347. core::ptr::mut_ptr::<impl *mut T>::offset:
    348.         sub     rsp, 16
    349.         shl     rsi, 3
    350.         add     rdi, rsi
    351.         mov     qword ptr [rsp + 8], rdi
    352.         mov     rax, qword ptr [rsp + 8]
    353.         mov     qword ptr [rsp], rax
    354.         mov     rax, qword ptr [rsp]
    355.         add     rsp, 16
    356.         ret
    357.  
    358. core::ptr::mut_ptr::<impl *mut T>::is_null:
    359.         sub     rsp, 24
    360.         mov     qword ptr [rsp + 16], rdi
    361.         xor     eax, eax
    362.         mov     esi, eax
    363.         mov     rdi, qword ptr [rsp + 16]
    364.         call    qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::guaranteed_eq@GOTPCREL]
    365.         mov     byte ptr [rsp + 15], al
    366.         mov     al, byte ptr [rsp + 15]
    367.         and     al, 1
    368.         movzx   eax, al
    369.         add     rsp, 24
    370.         ret
    371.  
    372. core::ptr::non_null::NonNull<T>::new_unchecked:
    373.         push    rax
    374.         mov     qword ptr [rsp], rdi
    375.         mov     rax, qword ptr [rsp]
    376.         pop     rcx
    377.         ret
    378.  
    379. core::ptr::non_null::NonNull<T>::as_ptr:
    380.         mov     rax, rdi
    381.         ret
    382.  
    383. core::ptr::const_ptr::<impl *const T>::wrapping_add:
    384.         push    rax
    385.         call    qword ptr [rip + core::ptr::const_ptr::<impl *const T>::wrapping_offset@GOTPCREL]
    386.         mov     qword ptr [rsp], rax
    387.         mov     rax, qword ptr [rsp]
    388.         pop     rcx
    389.         ret
    390.  
    391. core::ptr::const_ptr::<impl *const T>::guaranteed_eq:
    392.         sub     rsp, 2
    393.         cmp     rdi, rsi
    394.         sete    al
    395.         and     al, 1
    396.         mov     byte ptr [rsp + 1], al
    397.         mov     al, byte ptr [rsp + 1]
    398.         mov     byte ptr [rsp], al
    399.         mov     al, byte ptr [rsp]
    400.         and     al, 1
    401.         movzx   eax, al
    402.         add     rsp, 2
    403.         ret
    404.  
    405. core::ptr::const_ptr::<impl *const T>::wrapping_offset:
    406.         sub     rsp, 16
    407.         add     rdi, rsi
    408.         mov     qword ptr [rsp + 8], rdi
    409.         mov     rax, qword ptr [rsp + 8]
    410.         mov     qword ptr [rsp], rax
    411.         mov     rax, qword ptr [rsp]
    412.         add     rsp, 16
    413.         ret
    414.  
    415. core::ptr::const_ptr::<impl *const T>::add:
    416.         push    rax
    417.         call    qword ptr [rip + core::ptr::const_ptr::<impl *const T>::offset@GOTPCREL]
    418.         mov     qword ptr [rsp], rax
    419.         mov     rax, qword ptr [rsp]
    420.         pop     rcx
    421.         ret
    422.  
    423. core::ptr::const_ptr::<impl *const T>::offset:
    424.         sub     rsp, 16
    425.         shl     rsi, 3
    426.         add     rdi, rsi
    427.         mov     qword ptr [rsp + 8], rdi
    428.         mov     rax, qword ptr [rsp + 8]
    429.         mov     qword ptr [rsp], rax
    430.         mov     rax, qword ptr [rsp]
    431.         add     rsp, 16
    432.         ret
    433.  
    434. core::ptr::const_ptr::<impl *const T>::is_null:
    435.         sub     rsp, 24
    436.         mov     qword ptr [rsp + 16], rdi
    437.         xor     eax, eax
    438.         mov     esi, eax
    439.         mov     rdi, qword ptr [rsp + 16]
    440.         call    qword ptr [rip + core::ptr::const_ptr::<impl *const T>::guaranteed_eq@GOTPCREL]
    441.         mov     byte ptr [rsp + 15], al
    442.         mov     al, byte ptr [rsp + 15]
    443.         and     al, 1
    444.         movzx   eax, al
    445.         add     rsp, 24
    446.         ret
    447.  
    448. core::iter::traits::iterator::Iterator::zip:
    449.         sub     rsp, 72
    450.         mov     rax, rdi
    451.         mov     byte ptr [rsp + 55], 0
    452.         mov     byte ptr [rsp + 55], 1
    453.         mov     r9, qword ptr [rip + <I as core::iter::traits::collect::IntoIterator>::into_iter@GOTPCREL]
    454.         mov     qword ptr [rsp + 40], rdi
    455.         mov     rdi, rcx
    456.         mov     qword ptr [rsp + 32], rsi
    457.         mov     rsi, r8
    458.         mov     qword ptr [rsp + 24], rdx
    459.         mov     qword ptr [rsp + 16], rax
    460.         call    r9
    461.         mov     qword ptr [rsp + 8], rdx
    462.         mov     qword ptr [rsp], rax
    463.         jmp     .LBB24_1
    464. .LBB24_1:
    465.         mov     byte ptr [rsp + 55], 0
    466.         mov     rax, qword ptr [rip + core::iter::adapters::zip::Zip<A,B>::new@GOTPCREL]
    467.         mov     rdi, qword ptr [rsp + 40]
    468.         mov     rsi, qword ptr [rsp + 32]
    469.         mov     rdx, qword ptr [rsp + 24]
    470.         mov     rcx, qword ptr [rsp]
    471.         mov     r8, qword ptr [rsp + 8]
    472.         call    rax
    473.         jmp     .LBB24_2
    474. .LBB24_2:
    475.         mov     byte ptr [rsp + 55], 0
    476.         mov     rax, qword ptr [rsp + 16]
    477.         add     rsp, 72
    478.         ret
    479. .LBB24_3:
    480.         mov     rdi, qword ptr [rsp + 56]
    481.         call    _Unwind_Resume@PLT
    482.         ud2
    483. .LBB24_4:
    484.         jmp     .LBB24_3
    485. .LBB24_5:
    486.         test    byte ptr [rsp + 55], 1
    487.         jne     .LBB24_4
    488.         jmp     .LBB24_3
    489.         mov     qword ptr [rsp + 56], rax
    490.         mov     dword ptr [rsp + 64], edx
    491.         jmp     .LBB24_5
    492.  
    493. core::iter::adapters::zip::Zip<A,B>::new:
    494.         push    rax
    495.         mov     rax, rdi
    496.         mov     qword ptr [rsp], rax
    497.         call    qword ptr [rip + <core::iter::adapters::zip::Zip<A,B> as core::iter::adapters::zip::ZipImpl<A,B>>::new@GOTPCREL]
    498.         mov     rax, qword ptr [rsp]
    499.         pop     rcx
    500.         ret
    501.  
    502. core::iter::adapters::zip::TrustedRandomAccess::size:
    503.         sub     rsp, 40
    504.         lea     rax, [rsp + 16]
    505.         mov     qword ptr [rsp + 8], rdi
    506.         mov     rdi, rax
    507.         mov     rsi, qword ptr [rsp + 8]
    508.         call    qword ptr [rip + <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::size_hint@GOTPCREL]
    509.         mov     rax, qword ptr [rsp + 16]
    510.         add     rsp, 40
    511.         ret
    512.  
    513. core::iter::adapters::zip::TrustedRandomAccess::size:
    514.         sub     rsp, 40
    515.         lea     rax, [rsp + 16]
    516.         mov     qword ptr [rsp + 8], rdi
    517.         mov     rdi, rax
    518.         mov     rsi, qword ptr [rsp + 8]
    519.         call    qword ptr [rip + <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::size_hint@GOTPCREL]
    520.         mov     rax, qword ptr [rsp + 16]
    521.         add     rsp, 40
    522.         ret
    523.  
    524. core::slice::<impl [T]>::as_mut_ptr:
    525.         mov     rax, rdi
    526.         ret
    527.  
    528. core::slice::<impl [T]>::len:
    529.         sub     rsp, 16
    530.         mov     qword ptr [rsp], rdi
    531.         mov     qword ptr [rsp + 8], rsi
    532.         mov     rax, qword ptr [rsp + 8]
    533.         add     rsp, 16
    534.         ret
    535.  
    536. core::slice::<impl [T]>::iter:
    537.         sub     rsp, 24
    538.         call    qword ptr [rip + core::slice::iter::Iter<T>::new@GOTPCREL]
    539.         mov     qword ptr [rsp + 16], rax
    540.         mov     qword ptr [rsp + 8], rdx
    541.         mov     rax, qword ptr [rsp + 16]
    542.         mov     rdx, qword ptr [rsp + 8]
    543.         add     rsp, 24
    544.         ret
    545.  
    546. core::slice::<impl [T]>::as_ptr:
    547.         mov     rax, rdi
    548.         ret
    549.  
    550. core::slice::<impl [T]>::iter_mut:
    551.         sub     rsp, 24
    552.         call    qword ptr [rip + core::slice::iter::IterMut<T>::new@GOTPCREL]
    553.         mov     qword ptr [rsp + 16], rax
    554.         mov     qword ptr [rsp + 8], rdx
    555.         mov     rax, qword ptr [rsp + 16]
    556.         mov     rdx, qword ptr [rsp + 8]
    557.         add     rsp, 24
    558.         ret
    559.  
    560. core::slice::iter::Iter<T>::new:
    561.         sub     rsp, 88
    562.         mov     qword ptr [rsp + 56], rdi
    563.         mov     qword ptr [rsp + 48], rsi
    564.         call    qword ptr [rip + core::slice::<impl [T]>::as_ptr@GOTPCREL]
    565.         mov     qword ptr [rsp + 40], rax
    566.         mov     rdi, qword ptr [rsp + 40]
    567.         call    qword ptr [rip + core::ptr::const_ptr::<impl *const T>::is_null@GOTPCREL]
    568.         jmp     .LBB33_4
    569. .LBB33_4:
    570.         mov     eax, 8
    571.         cmp     rax, 0
    572.         je      .LBB33_6
    573.         mov     rdi, qword ptr [rsp + 56]
    574.         mov     rsi, qword ptr [rsp + 48]
    575.         call    qword ptr [rip + core::slice::<impl [T]>::len@GOTPCREL]
    576.         mov     qword ptr [rsp + 32], rax
    577.         jmp     .LBB33_9
    578. .LBB33_6:
    579.         mov     rax, qword ptr [rsp + 40]
    580.         mov     rdi, qword ptr [rsp + 56]
    581.         mov     rsi, qword ptr [rsp + 48]
    582.         mov     qword ptr [rsp + 24], rax
    583.         call    qword ptr [rip + core::slice::<impl [T]>::len@GOTPCREL]
    584.         mov     qword ptr [rsp + 16], rax
    585.         mov     rdi, qword ptr [rsp + 24]
    586.         mov     rsi, qword ptr [rsp + 16]
    587.         call    qword ptr [rip + core::ptr::const_ptr::<impl *const T>::wrapping_add@GOTPCREL]
    588.         mov     qword ptr [rsp + 8], rax
    589.         mov     rax, qword ptr [rsp + 8]
    590.         mov     qword ptr [rsp + 80], rax
    591.         jmp     .LBB33_11
    592. .LBB33_9:
    593.         mov     rdi, qword ptr [rsp + 40]
    594.         mov     rsi, qword ptr [rsp + 32]
    595.         call    qword ptr [rip + core::ptr::const_ptr::<impl *const T>::add@GOTPCREL]
    596.         mov     qword ptr [rsp + 80], rax
    597.         jmp     .LBB33_11
    598. .LBB33_11:
    599.         mov     rdi, qword ptr [rsp + 40]
    600.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::new_unchecked@GOTPCREL]
    601.         mov     qword ptr [rsp], rax
    602.         mov     rax, qword ptr [rsp + 80]
    603.         mov     rcx, qword ptr [rsp]
    604.         mov     qword ptr [rsp + 64], rcx
    605.         mov     qword ptr [rsp + 72], rax
    606.         mov     rax, qword ptr [rsp + 64]
    607.         mov     rdx, qword ptr [rsp + 72]
    608.         add     rsp, 88
    609.         ret
    610.  
    611. core::slice::iter::IterMut<T>::new:
    612.         sub     rsp, 88
    613.         mov     qword ptr [rsp + 56], rdi
    614.         mov     qword ptr [rsp + 48], rsi
    615.         call    qword ptr [rip + core::slice::<impl [T]>::as_mut_ptr@GOTPCREL]
    616.         mov     qword ptr [rsp + 40], rax
    617.         mov     rdi, qword ptr [rsp + 40]
    618.         call    qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::is_null@GOTPCREL]
    619.         jmp     .LBB34_4
    620. .LBB34_4:
    621.         mov     eax, 8
    622.         cmp     rax, 0
    623.         je      .LBB34_6
    624.         mov     rdi, qword ptr [rsp + 56]
    625.         mov     rsi, qword ptr [rsp + 48]
    626.         call    qword ptr [rip + core::slice::<impl [T]>::len@GOTPCREL]
    627.         mov     qword ptr [rsp + 32], rax
    628.         jmp     .LBB34_9
    629. .LBB34_6:
    630.         mov     rax, qword ptr [rsp + 40]
    631.         mov     rdi, qword ptr [rsp + 56]
    632.         mov     rsi, qword ptr [rsp + 48]
    633.         mov     qword ptr [rsp + 24], rax
    634.         call    qword ptr [rip + core::slice::<impl [T]>::len@GOTPCREL]
    635.         mov     qword ptr [rsp + 16], rax
    636.         mov     rdi, qword ptr [rsp + 24]
    637.         mov     rsi, qword ptr [rsp + 16]
    638.         call    qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::wrapping_add@GOTPCREL]
    639.         mov     qword ptr [rsp + 8], rax
    640.         mov     rax, qword ptr [rsp + 8]
    641.         mov     qword ptr [rsp + 80], rax
    642.         jmp     .LBB34_11
    643. .LBB34_9:
    644.         mov     rdi, qword ptr [rsp + 40]
    645.         mov     rsi, qword ptr [rsp + 32]
    646.         call    qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::add@GOTPCREL]
    647.         mov     qword ptr [rsp + 80], rax
    648.         jmp     .LBB34_11
    649. .LBB34_11:
    650.         mov     rdi, qword ptr [rsp + 40]
    651.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::new_unchecked@GOTPCREL]
    652.         mov     qword ptr [rsp], rax
    653.         mov     rax, qword ptr [rsp + 80]
    654.         mov     rcx, qword ptr [rsp]
    655.         mov     qword ptr [rsp + 64], rcx
    656.         mov     qword ptr [rsp + 72], rax
    657.         mov     rax, qword ptr [rsp + 64]
    658.         mov     rdx, qword ptr [rsp + 72]
    659.         add     rsp, 88
    660.         ret
    661.  
    662. <I as core::iter::traits::collect::IntoIterator>::into_iter:
    663.         push    rax
    664.         mov     rax, rdi
    665.         mov     edx, 48
    666.         mov     qword ptr [rsp], rax
    667.         call    memcpy@PLT
    668.         mov     rax, qword ptr [rsp]
    669.         pop     rcx
    670.         ret
    671.  
    672. <I as core::iter::traits::collect::IntoIterator>::into_iter:
    673.         mov     rax, rdi
    674.         mov     rdx, rsi
    675.         ret
    676.  
    677. <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked:
    678.         sub     rsp, 24
    679.         mov     rdi, qword ptr [rdi]
    680.         mov     qword ptr [rsp + 16], rsi
    681.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL]
    682.         mov     qword ptr [rsp + 8], rax
    683.         mov     rdi, qword ptr [rsp + 8]
    684.         mov     rsi, qword ptr [rsp + 16]
    685.         call    qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::add@GOTPCREL]
    686.         mov     qword ptr [rsp], rax
    687.         mov     rax, qword ptr [rsp]
    688.         add     rsp, 24
    689.         ret
    690.  
    691. <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::size_hint:
    692.         sub     rsp, 104
    693.         mov     rax, rdi
    694.         mov     rcx, qword ptr [rsi]
    695.         mov     qword ptr [rsp + 64], rdi
    696.         mov     rdi, rcx
    697.         mov     qword ptr [rsp + 56], rsi
    698.         mov     qword ptr [rsp + 48], rax
    699.         mov     qword ptr [rsp + 40], rcx
    700.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL]
    701.         jmp     .LBB38_2
    702. .LBB38_2:
    703.         mov     eax, 8
    704.         cmp     rax, 0
    705.         je      .LBB38_4
    706.         mov     rax, qword ptr [rsp + 56]
    707.         mov     rcx, qword ptr [rax + 8]
    708.         mov     rdi, qword ptr [rsp + 40]
    709.         mov     qword ptr [rsp + 32], rcx
    710.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL]
    711.         mov     qword ptr [rsp + 24], rax
    712.         jmp     .LBB38_7
    713. .LBB38_4:
    714.         mov     rax, qword ptr [rsp + 56]
    715.         mov     rdi, qword ptr [rax + 8]
    716.         mov     rcx, qword ptr [rsp + 40]
    717.         mov     qword ptr [rsp + 16], rdi
    718.         mov     rdi, rcx
    719.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL]
    720.         mov     qword ptr [rsp + 8], rax
    721.         mov     rdi, qword ptr [rsp + 16]
    722.         mov     rsi, qword ptr [rsp + 8]
    723.         call    core::num::<impl usize>::wrapping_sub
    724.         mov     qword ptr [rsp + 72], rax
    725.         jmp     .LBB38_10
    726. .LBB38_7:
    727.         mov     rax, qword ptr [rsp + 32]
    728.         mov     rcx, qword ptr [rsp + 24]
    729.         sub     rax, rcx
    730.         mov     qword ptr [rsp + 96], rax
    731.         mov     rax, qword ptr [rsp + 96]
    732.         mov     qword ptr [rsp], rax
    733.         mov     rax, qword ptr [rsp]
    734.         shr     rax, 3
    735.         mov     qword ptr [rsp + 72], rax
    736.         jmp     .LBB38_10
    737. .LBB38_10:
    738.         mov     rax, qword ptr [rsp + 72]
    739.         mov     rcx, qword ptr [rsp + 72]
    740.         mov     qword ptr [rsp + 88], rcx
    741.         mov     qword ptr [rsp + 80], 1
    742.         mov     rcx, qword ptr [rsp + 64]
    743.         mov     qword ptr [rcx], rax
    744.         mov     rax, qword ptr [rsp + 80]
    745.         mov     rdx, qword ptr [rsp + 88]
    746.         mov     qword ptr [rcx + 8], rax
    747.         mov     qword ptr [rcx + 16], rdx
    748.         mov     rax, qword ptr [rsp + 48]
    749.         add     rsp, 104
    750.         ret
    751.  
    752. <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::__iterator_get_unchecked:
    753.         sub     rsp, 24
    754.         mov     rdi, qword ptr [rdi]
    755.         mov     qword ptr [rsp + 16], rsi
    756.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL]
    757.         mov     qword ptr [rsp + 8], rax
    758.         mov     rdi, qword ptr [rsp + 8]
    759.         mov     rsi, qword ptr [rsp + 16]
    760.         call    qword ptr [rip + core::ptr::mut_ptr::<impl *mut T>::add@GOTPCREL]
    761.         mov     qword ptr [rsp], rax
    762.         mov     rax, qword ptr [rsp]
    763.         add     rsp, 24
    764.         ret
    765.  
    766. <core::slice::iter::IterMut<T> as core::iter::traits::iterator::Iterator>::size_hint:
    767.         sub     rsp, 104
    768.         mov     rax, rdi
    769.         mov     rcx, qword ptr [rsi]
    770.         mov     qword ptr [rsp + 64], rdi
    771.         mov     rdi, rcx
    772.         mov     qword ptr [rsp + 56], rsi
    773.         mov     qword ptr [rsp + 48], rax
    774.         mov     qword ptr [rsp + 40], rcx
    775.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL]
    776.         jmp     .LBB40_2
    777. .LBB40_2:
    778.         mov     eax, 8
    779.         cmp     rax, 0
    780.         je      .LBB40_4
    781.         mov     rax, qword ptr [rsp + 56]
    782.         mov     rcx, qword ptr [rax + 8]
    783.         mov     rdi, qword ptr [rsp + 40]
    784.         mov     qword ptr [rsp + 32], rcx
    785.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL]
    786.         mov     qword ptr [rsp + 24], rax
    787.         jmp     .LBB40_7
    788. .LBB40_4:
    789.         mov     rax, qword ptr [rsp + 56]
    790.         mov     rdi, qword ptr [rax + 8]
    791.         mov     rcx, qword ptr [rsp + 40]
    792.         mov     qword ptr [rsp + 16], rdi
    793.         mov     rdi, rcx
    794.         call    qword ptr [rip + core::ptr::non_null::NonNull<T>::as_ptr@GOTPCREL]
    795.         mov     qword ptr [rsp + 8], rax
    796.         mov     rdi, qword ptr [rsp + 16]
    797.         mov     rsi, qword ptr [rsp + 8]
    798.         call    core::num::<impl usize>::wrapping_sub
    799.         mov     qword ptr [rsp + 72], rax
    800.         jmp     .LBB40_10
    801. .LBB40_7:
    802.         mov     rax, qword ptr [rsp + 32]
    803.         mov     rcx, qword ptr [rsp + 24]
    804.         sub     rax, rcx
    805.         mov     qword ptr [rsp + 96], rax
    806.         mov     rax, qword ptr [rsp + 96]
    807.         mov     qword ptr [rsp], rax
    808.         mov     rax, qword ptr [rsp]
    809.         shr     rax, 3
    810.         mov     qword ptr [rsp + 72], rax
    811.         jmp     .LBB40_10
    812. .LBB40_10:
    813.         mov     rax, qword ptr [rsp + 72]
    814.         mov     rcx, qword ptr [rsp + 72]
    815.         mov     qword ptr [rsp + 88], rcx
    816.         mov     qword ptr [rsp + 80], 1
    817.         mov     rcx, qword ptr [rsp + 64]
    818.         mov     qword ptr [rcx], rax
    819.         mov     rax, qword ptr [rsp + 80]
    820.         mov     rdx, qword ptr [rsp + 88]
    821.         mov     qword ptr [rcx + 8], rax
    822.         mov     qword ptr [rcx + 16], rdx
    823.         mov     rax, qword ptr [rsp + 48]
    824.         add     rsp, 104
    825.         ret
    826.  
    827. ...
    828.  
     
  18. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    rmn,

    > ничего не устанавливая: https://godbolt.org/

    Текстового редактора нет, но я к примеру привык в блокноте код писать. Но сейчас такой аскетизм врядле уместен.
     
  19. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
    Cl.exe - это компилятор, а не линкер, и у него тоже бинарей навалом, так что сравнение всегда уместно.

    Ну ты же мне не даешь последний семпл своего чудо визора, зачем мне тебе с семплом раста помогать?

    Так а что за проблема, я не понял. Я же тебе написал, зайди на тот сайт, напиши код и посмотри, какой компиль асм-листинг выплюнет. Зачем тебе семпл? Асм-листинг куда нагляднее же.
     
  20. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    956
    дело не в бинарей навалом, компилятор просто генерит объектный код для каждого модуля, а вот линкер уже должен все перекрёстные связи меж модулями собрать и загенерить в итоге рабочее ехе
    --- Сообщение объединено, 21 фев 2021 ---
    блин, ты реально в инсте преподаешь?