Я начал изучать C ++ на сайте cplusplus.com, и там есть учебник по языку. В этом уроке первый урок посвящен компиляторам, и этот урок можно найти по адресу http://www.cplusplus.com/doc/tutorial/introduction/, они приводят следующий пример:
Отдельная инструкция для компьютера может выглядеть так:
00000 10011110
Программа на машинном языке конкретного компьютера, которая позволяет пользователю вводить два числа, складывать два числа вместе и отображать общее количество, может включать следующие инструкции машинного кода:
00000 10011110 00001 11110100 00010 10011110 00011 11010100 00100 10111111 00101 00000000
Мой вопрос: почему они помещают 5 бит впереди (слева) отдельно от остальных 8 бит справа? Что означает группа из 5 бит слева? Эта группа говорит компьютеру, как интерпретировать 8 бит справа? Например, говорит ли он компьютеру, что справа идет число, символ или оператор? Я пытался найти ответ на этот вопрос в Интернете, но я не смог найти ничего, что могло бы прояснить для меня. Если бы кто-нибудь мог дать мне четкий ответ в простых терминах, это было бы очень ценно.
Как уже отмечалось, это кажется произвольным, одно из возможных объяснений состоит в том, что он разделяет операторы и операнды, но, поскольку он последовательный, лучше всего предположить, что это просто адрес инструкции:
00000 => адрес 0
00001 => адрес 1
00010 => адрес 2
00011 => адрес 3
00100 => адрес 4
00101 => адрес 5
Инструкции машинного кода зависят от оборудования, Вот несколько примеров, разделяющих операторы и операнды.
[ op | target address ] 2 1024 decimal 000010 00000 00000 00000 10000 000000 binary
Других решений пока нет …