05. Основы устройства компьютера. Регистры и команды процессора. [Универсальный программист]

Поділитися
Вставка
  • Опубліковано 16 жов 2024
  • #программирование #процессор #Система_команд #Регистры_процессора
    Изучаем регистры процессора и систему команд на примере x86 и ARM.
    Плейлист Универсальный программист: • Универсальный программист
    Плейлист Реальный код: • Реальный код
    Вы можете помочь развитию канала, подписавшись на Patreon: / unicoder
    или Boosty: boosty.to/unic...
    или переведя любую сумму на карту: 5536 9140 0276 0019
    или Bitcoin: 3Cb8Jb8cZNeiMx1saUPfb2JxBwQRYYbuGF
    Также смотрите меня в Дзене: dzen.ru/unicoder

КОМЕНТАРІ • 23

  • @limoshkamilk9887
    @limoshkamilk9887 4 дні тому

    Спасибо Вам, канал "офигенный" вы просто молодцы, так совершенно доносить информацию. Ваша работа бесценна, желаю развития и реализации любых Ваших проектов❤❤❤

  • @ПозитивныйДэн-х4ш

    Невероятно крутой человек. На ютубе полно всякой информации, но реально полезную и трудную для понимания показывают только невероятно крутые люди.

  • @nanoqsh
    @nanoqsh 3 роки тому +9

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

  • @sergeyloskutov5069
    @sergeyloskutov5069 3 роки тому +7

    Коммент в поддержку канала! :)

  • @РашидМинуллин
    @РашидМинуллин Рік тому +3

    Коасавчик

  • @Uni-Coder
    @Uni-Coder  2 роки тому +3

    Плейлист Универсальный программист: ua-cam.com/play/PL5m-8QEDhBYvE5EDQl9p5jFabkiMu--ei.html
    Плейлист Реальный код: ua-cam.com/play/PL5m-8QEDhBYsl0OEDVg0vX727Sfe0fS_3.html
    Вы можете помочь развитию канала, подписавшись на Patreon: www.patreon.com/unicoder
    или Boosty: boosty.to/unicoder
    или переведя любую сумму на карту: 5536 9140 0276 0019
    или Bitcoin: 3Cb8Jb8cZNeiMx1saUPfb2JxBwQRYYbuGF
    Также смотрите меня в Дзене: dzen.ru/unicoder

  • @vic7871
    @vic7871 2 роки тому +2

    Спасибо!

  • @magadan4626
    @magadan4626 Рік тому +3

    Можете объяснить? Вот есть система команд и есть инструкции, есть регистр команд, который говорит процессору, какую инструкцию выполнять....
    Инструкции и команды - это одно и тоже? Почему в контексте процессоров они упоминаются одновременно?

    • @Uni-Coder
      @Uni-Coder  Рік тому +2

      Да, это одно и то же.
      Упоминаю оба термина, потому что в русскоязычной литературе/видео/лекциях и т.д. тоже упоминаются оба термина.

  • @Krylowandrey
    @Krylowandrey 3 місяці тому

    Можно ли где ни будь посмотреть весь процесс сложения 2х чисел на уровне физических процессов ( напряжение, сопративлений, сила тока и т.п.)?

    • @ДанилЧисняков
      @ДанилЧисняков 2 місяці тому +1

      если такое интересно, то тут нужно идти изучать цифровую схемотехнику. Где описано из какой элементной базы создаются сумматоры, зная элементую базу можно узнать какие там сопротивления и токи.

  • @PianoElipse
    @PianoElipse 2 роки тому +3

    хаха а я писал такую инструкцию, которая указана на preview. По факту это просто умножение числа в 4 раза (shl eax, 2)

  • @stepanshnder1850
    @stepanshnder1850 Рік тому +1

    Слушай я вот что не понял. Допустим в АЛУ процессора идет комбинация вентилей И например: 1010. Так вот, каждая следующая логическая операция идет после прежней, но при этом не записывает данные предыдущей. Вот как тогда процессор понимает что именно комбинация 1010 произошла и должна быть записана в регистр???? Ведь там нет шины которая передает данные в регистр отдельно

    • @Uni-Coder
      @Uni-Coder  Рік тому +1

      Ну, дружище, это уже схемотехника, а у меня канал про программирование. Я уж так в общих чертах объяснил про устройство процессоров, чтобы программисты понимали, и регистры, которые доступны программным способом через машинные инструкции. А глубже копаться - это уже дело электроники и схемотехники. Я думаю, там должны быть какие-то промежуточные регистры, которые защёлкивают данные первой операции, чтобы потом отправить их во вторую операцию. Просто эти регистры программно недоступны, нет ассемблерных команд для их чтения/записи.
      Ну если я правильно понял вопрос.

    • @stepanshnder1850
      @stepanshnder1850 Рік тому +2

      @@Uni-Coder я спросил у чат гпт. Насколько я понял, то комбинация И логических операций в конце такта записывается в виде опкода в регистр, то есть процессор не знает какие отдельные биты использовались в прошлой логической операций.
      Спасибо за ответ конечно. Сам изучаю c++, интересно просто

  • @mangoost11
    @mangoost11 15 днів тому

    Ребята Так это же ассемблер а я-то думал....😂😂😂

  • @Ra.03
    @Ra.03 Рік тому +1

    Кто знает !!!! Подскажите как называется это - умение из любого процессора телефона умной кофеварки или любой фигни в которой есть процессор написать программу и сделать из любой хрени устройство которое будет делать то что ты ему сказал ну по возможностям устройства??????? А главное как этому научиться ???

    • @Uni-Coder
      @Uni-Coder  Рік тому +1

      Программирование микроконтроллеров. Alex Guyver, например, этим занимается.
      А программирование телефонов - это отдельная тема

  • @TheKirk1989
    @TheKirk1989 Рік тому +1

    ты просто навалил кучу инфы мне на голову, и наверное никогда не слышал про то, что такое декомпозиция... Вангую, через некоторое время ты выпустишь ролик с++ и js за час

  • @barabucho
    @barabucho 3 роки тому +2

    Очень много гемора,для писанины под х86 на asm,еще не беря во внимание всячиские замороченные оптимизации.

    • @Uni-Coder
      @Uni-Coder  3 роки тому +2

      Да уж, так себе занятие

  • @steppeez
    @steppeez Рік тому

    10:36 ) for example: ADR R6, #4
    ------------------------
    10100110 00000001
    ------------------------
    ARM Architecture
    Reference Manual
    ADR
    Address to Register adds an immediate value to the PC value, and writes the result to the destination register.
    (executed code adds an immediate value to the PC value, and writes the result to the destination register)
    Encodings
    T1 ADR ,
    --------------------------------------------
    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
    1 0 1 0 0 Rd imm8
    --------------------------------------------
    T2 ADR.W , before current instruction
    SUB ,PC,#0 Special case for zero offset
    ---------------------------------------------------------------------------
    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
    1 1 1 1 0 i 1 0 1 0 1 0 1 1 1 1 0 imm3 Rd imm8
    ---------------------------------------------------------------------------
    T3 ADR.W , after current instruction
    ---------------------------------------------------------------------------
    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
    1 1 1 1 0 i 1 0 0 0 0 0 1 1 1 1 0 imm3 Rd imm8
    ---------------------------------------------------------------------------
    d = UInt(Rd); imm32 = ZeroExtend(i:imm3:imm8, 32); add = TRUE;
    if BadReg(d) then UNPREDICTABLE;
    Architecture versions
    Encodings T1 All versions of the Thumb instruction set.
    Encodings T2, T3 All versions of the Thumb instruction set from Thumb-2 onwards.
    Assembler syntax
    where:
    See Standard assembler syntax fields on page 4-6.
    Specifies the destination register.
    Specifies the label of an instruction or literal data item whose address is to be loaded into
    . The assembler calculates the required value of the offset from the Align(PC,4)
    value of the ADR instruction to this label.
    If the offset is positive, encodings T1 and T3 are permitted with imm32 equal to the offset.
    Allowed values of the offset are multiples of four in the range 0 to 1020 for encoding T1 and
    any value in the range 0 to 4095 for encoding T3.
    If the offset is negative, encoding T2 is permitted with imm32 equal to minus the offset.
    Allowed values of the offset are -4095 to -1.
    In the alternative syntax forms:
    Specifies the offset value for the ADD form and minus the offset value for the SUB form.
    Allowed values are multiples of four in the range 0 to 1020 for encoding T1 and any value
    in the range 0 to 4095 for encodings T2 and T3.
    Note
    It is recommended that the alternative syntax forms are avoided where possible. However,
    the only possible syntax for encoding T2 with all immediate bits zero is
    SUB ,PC,#0.
    Operation
    if ConditionPassed() then
    EncodingSpecificOperations();
    base = Align(PC, 4); // Word-aligned PC
    R[d] = if add then (base + imm32) else (base - imm32);
    Exceptions
    None.