#java #ассемблер #информатика #cpu
Передо мной стоит вот такая задача:
Разработать эмулятор процессора, создать для него язык ассемблера и написать несколько
программ. Нужно придумать свою архитектуру CPU и придумать ряд команд, почитайте про
современные архитектуры и например наборы команд SSE и AVX.
Помогите пожалуйста разобраться. Я понял так(хотя понимание пока очень поверхностное):
Мне не надо напрямую возиться с регистрами и все такое? Главное на логическом уровне
все правильно сделать а не физическом? То есть можно взять любой ЯП, например Java,
и на нем писать процессор? Он не будет иметь ничего общего с физическими процессорами,
но по логике будем им соответствовать. То есть у нас может быть программа, в которой
создан массив - наша эмуляция памяти, например так: long[] memory = new long[1024
* 1024]. Еще один массив - эмулирет регистры. Наша основная программа стартует, создаются
оба массива, дальше она начинает считывать из заранее заготовленного файла по одной
строке. А вот в файле мы заранее напишем нашу систему команд - Логические - and, or,
not, xor. Численные - add, sub, mul, div. Программа будет их считывать и выполнять.
То есть в основной функции программы, которая считывает и выполняет команды, можно
будет написать switch если add -> складываем, если mul -> умножаем и т.д. Подскажите
пожалуйста, хотя бы направление мыслей правильное?
Ответы
Ответ 1
В целях обучения лучше взять простой процессор, который имеет задатки и много общего с реальными, но не настоящий - это 100%. В железе будет много оптимизации, которую вы не поймете и ограничений из-за жестокого реального мира, который не дает реализовать все так просто, как хотелось бы в теории. Нам профессор показал, как от простых бинарных операций дойти до С++. В конце (все кто сдали) с легкостью доказывали инвариантность С++ программ и логических состояний процессора по шагам. Но, боюсь, что без толкового преподавателя вам не обойтись. Посмотрите на этот пример, что бы просто понять, что такое ALU, вам нужно неплохо разбираться в дискретной математике. Работа с памятью не возможна без MUX DEMUX и знаний о них, что такое стэк и где хранится OP и т.д. Языки - это отдельная тема и очень обширная. Посмотрите на Computation Structures - Part 1 и Computation Structures - Part 2, я уверен - эти курсы дадут вам на порядок больше, нежели чем вы сами будете блуждать в бессистемных статьях вики и уж тем более тут. При все моем уважение к этому проекту, он абсолютно не академичен да и не стремится к этому. З.Ы. Вот тут хороший набор команд - из моих реликвий )
Комментариев нет:
Отправить комментарий