3

Я смотрел на то, как работает язык ассемблера, потому что я хочу узнать, как сложные и причудливые вещи мой компьютер на самом деле происходят на уровне регистров / оборудования ЦП. Есть ли способ узнать, что происходит при обычном использовании компьютера?

Я хочу узнать, например, какие вещи входят и выходят из различных регистров, когда я говорю, просматривая Интернет или играя в игру, и т.д. Хотя даже если бы я мог смотреть это, я не уверен, как я мог бы соотнести это к конкретным вычислениям, которые я вижу, происходящие на более высоком уровне. То есть я не знаю, как узнать, связан ли этот шестнадцатеричный код с этим регистром в данный момент с обработкой SSL-шифрования Firefox и т.д.

2 ответа2

5

Вы понимаете, что эти процессоры работают на частоте 3 ГГц или около того - если вы хотите работать в режиме реального времени, ваш (или мой) слабый мозг не сможет не отставать.

И небольшой спор: вы не смотрите на ассемблер на процессоре, вы отбрасываете некоторую информацию и переходите прямо к машинному коду. Там нет "ветвь к процедуре печати", это будет «ветвь к месту 227015ED42AB12F2 или что-то еще. Вы должны будете помнить, что делает это местоположение. Опять же, заваливая вашу нейронную сеть. Вам придется "собрать обратно" то, что происходит, чтобы понять это. Очень сложно.

Тем не менее, у вас есть несколько вариантов, которые делают не совсем то, что вы хотите.

1) Получить отладчик, запустить вашу программу под отладчиком. Они обычно показывают машинный код / сборку (они используют символы C как ассемблер). Это покажет некоторую информацию, но помните, что даже простая программа может быть миллионами, а может быть, миллиардами инструкций. К тому времени, когда вы дойдете до машинного кода, исходный код будет скомпилирован, оптимизирован и связан с системными библиотеками. Это будет сложно.

2) Ищите симуляторы. Они покажут подмножество кода и будут работать медленнее, что вы можете не отставать. У меня были C64 и Atari 800, и я играл с Apple, так что Virtual 6502 мне кажется забавным.

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

3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .