| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Философия программирования > С чего всё началось? |
| Автор: EnrolL 20.4.2005, 19:40 |
| Привет всем! Есть следуйщий вопрос, мен интеренсо с чего всё началось, пожалусат елси можно подробнее об этом::: я никак непойму откуда процессор знает, что куда делать, если С++ то тут ясно он был написан в ассме, ассм и руководить им грубо говоря, а как тогда сам ассм. Зарание благодарин! |
| Автор: Caramel 20.4.2005, 19:46 |
| Модератор: EnrolL, проверяйте ваши сообщения прежде чем постить их в форуме. Это не русский язык. Это его суррогат. Вашу вторую тему я удаляю. |
| Автор: Дрон 20.4.2005, 19:47 | ||
А может ещё рассказать откуда дети берутся Добавлено @ 19:50 Сформулируй, пожалуйста, свой вопрос по-человечески, может тогда чего-нибудь толковое и расскажем |
| Автор: Caramel 20.4.2005, 19:50 | ||
Это ты рядом топик организуй)))) EnrolL, я не поняла вашего вопроса |
| Автор: EnrolL 20.4.2005, 21:36 |
| Сорри писал быстро, голодный, хотел успеть как побыстрее. Нащёт детей, давай обьясни. Я хотел спросить как процессор понимает код вернее язык ассемблера, а потом и С++, у него етсь своя память или что, просто немогу понять как люди это сделали, как он сам знает что делать. Блин тяжело обьяснить даже, ну там 0 и 1, как он понимает слово for puts и другие, как люди сделал так тчо б он это понимал. |
| Автор: batigoal 20.4.2005, 22:59 |
| Тяжело ответить на такой вопрос... Почитай чего-нибудь по архитектуре процессора и машинным кодам... Могу скинуть институтский курс... |
| Автор: LSD 20.4.2005, 23:11 |
| Если я тебя правильно понял, то тебя интересует как возникли компиляторы. Вначале программы писали в машинных кодах (у меня препод по информатике до сих пор помнит некоторые команды). Потом появился ассемблер, и самый первый писался в машинных кодах. Последующие уже писались, с помощью предыдущих версий его же. Так же и многие компиляторы, или пишутся на предыдущей версии или на другом языке. |
| Автор: batigoal 20.4.2005, 23:14 | ||
Мне тоже доводилось пробовать, на лабораторных стендах. Непередаваемые ощущения... |
| Автор: Vex 20.4.2005, 23:21 | ||
Наверное чувствовал себя человеком забравшимся в святая святых или напримаер нейрохирургом? |
| Автор: LSD 20.4.2005, 23:25 | ||
Не, неандертальцем |
| Автор: EnrolL 21.4.2005, 00:12 |
| Lamer George Скинь плиззз Да вы всё правельно поняли, так растолкуйте плиз на пальцах, как это делали они там что, за ниточки дёргали каиктео или как там каиетео электрические импульси, ну просто неясно откуда проц знает что от него хотят, откуда он занет тчо это 0 и 1, где у него память. |
| Автор: batigoal 21.4.2005, 10:12 | ||
Я покопаюсь дома. Не уверен, что эти лекции можно понять без объяснений, но хуже не будет. Вот схема простого процессора там точно есть.
Я себя чувствовал придатком этого стенда. Этакий преобразователь шестнадцатеричных кодов в механические пальцевые усилия. EnrolL Скажу тебе по секрету <оглядываюсь по сторонам и перехожу на шепот>, я и сам до сих пор уверен, что без шаманизма не обошлось... |
| Автор: Дрон 21.4.2005, 10:25 |
| Ок. Чуть по позже попытаюсь объяснить (не о детях |
| Автор: AgereS 21.4.2005, 10:32 | ||
вначале было слово |
| Автор: Дрон 21.4.2005, 10:49 |
| Итак. Языки высокого уровня, такие как Паскаль или С++ сначала компилируются в машинные коды. Как происходит компиляция это целый университетский курс, так что в двух словах объяснить сложно, но попрообую Сначала исходный текст разбивается на "лексемы", т.е. находятся все слова for, do, переменные и прочие символы. Дальше, грубо говоря, в компиляторе задано соответствие каждой комбинации слов и машинного кода. Т.е., например, цикл for превращается в некоторый набор чисел, и т.д. Языки высокого уровня характерны тем, что из одной команды возникает довольно много машинного кода. Ассемблер, кстати, тут совсем не причём. Язык ассемблера, грубо говоря, это запись машинных кодов при помощи слов, так называемых мнемоник. Там каждой команде соответсвует несколько байт в машинном коде. Например команде INC AX, соответствует один байт с шестнадцатеричным кодом 40. Как именно выполняются машинные коды расскажу ещё чуть позже. |
| Автор: batigoal 21.4.2005, 11:00 |
| Дрон Валяй, у меня сегодня работы много |
| Автор: EnrolL 21.4.2005, 20:31 | ||
Спасибо, чуть чтуь светлее стало, давай в тмо же духе. |
| Автор: Dexter 21.4.2005, 22:26 | ||
Процессор же в принципе микросхема, тока сложная... Очень... На контакт поступает импульс 0 или 1, они обрабатываются и на выходе получаются то же 0 и 1, тока другие... Вобщем так, я думаю.... |
| Автор: Дрон 22.4.2005, 00:40 | ||
Правильно думаешь Вся цифровая электроника работает с двоичными числами, т.е. всё представляется в виде 0 и 1. И задача любого электронного устройства (проца, калькулятора, часов) заключается в преобразовании одних последовательностей нулей и единиц в другие. Примитивнейшими элементами, из которых состоит простейший процессор являются блоки выполняющие операции И, ИЛИ, НЕ, а также регистры, хранящие данные (ну и позволяющие их изменять). Читая команды из памяти, процессор переходит из одного состояния в другое. Состояние процессора это всего лишь число хранящееся во внутреннем регистре. А переходы между этими состояниями это выполнение каких либо логических операций над числами. Всё работает так: 1. прочитал вход 2. выполнил одни действия И/ИЛИ/НЕ с битами входа и битами состояния и получил биты выхода 3. выполнил другие действия И/ИЛИ/НЕ с теми же битами и получил номер следующего состояния 4. запомнил состояние и вернулся к 1. Состояния могут быть например такие: - ожидание команды - ожидание номера регистра назначения - ожидание номера исходного регистра - ожидание первого байта данных - ожидание второго байта данных и т.п. Например в моей курсовой, где надо было спроектировать электронные часы, их "процессор" содержал всего семь состояний. Но и функций то у них кот наплакал Вообще, всё это рассказывается в курсе теории автоматов. Если есть какие-то вопросы и замечания, буду рад ответить. |
| Автор: EnrolL 22.4.2005, 04:03 |
| Хоро а откуда он знает что 0 это 0 а не 1 и 1 это 1 а не наоборот. И что из себя представляет ригистр.И ещо где можно почерпнуть про микроэлектронику в краце, что б понять как эти импульси происходят. |
| Автор: Дрон 22.4.2005, 09:34 | ||||
| 0 - есть напряжение 1 - нет напряжения или наоборот смотря, что за устройство
Сам уже толком не помню.
В книжках, в интернете Ничего конкретного посоветовать не могу. |
| Автор: batigoal 22.4.2005, 10:49 | ||||
Это зависит от способа кодирования, который, в принципе, может быть различным. Например, можно "договориться", что положительный заряд - это 1, а отрицательный - это 0. Или если есть заряд - 1, если нет - 0. Или намагниченный учаток - 1, размагниченный - 0. И т.д.
Регистры - группа блоков в процессоре, в которых он хранит данные, с которыми в данный момент работает. Сейчас наиболее распространены 32-разрядные процессора, но уже идут 64-разрядные. Это значит, что он оперирует 32-разрядными операторами и регистры у него такие же. 32 разряда - это возможность хранить последовательность из 32 нулей и единиц (1100100101010000...). То есть, по сути, регистр - это просто 32 примитивных ячейки. Добавлено @ 10:56 Забыл я выложить инфу вчера. Пьяный был. Сейчас напоминалку поставлю. |
| Автор: Dexter 22.4.2005, 16:00 | ||||
Вот график напряжения на контакте процессора, вот нули и единицы обозначены, теперь понял как узнает? |
| Автор: batigoal 22.4.2005, 16:15 |
| Кстати, в сетевых технологиях часто применяется так называемый манчестерский код. Объяснять не буду, просто скажу - его используют из-за того, что если в вышеприведенном способе будет несколько одинаковых символов подряд, то оборудование может "сбиться". |
| Автор: Dexter 22.4.2005, 17:24 |
| Ну это я для простоты понимания... |
| Автор: EnrolL 22.4.2005, 21:22 |
| Мммм... Так а как проц понимает что слово for это слово fo, у него что етсь своя комбинация чесел 110010001110 - что то в виде этого. И как тогда понять какая алгоритм существует. |
| Автор: Dexter 22.4.2005, 21:29 |
| фора в ассемблере нет, та все более примитивно... А если ты про языки высокого уровня, то конструкция фор переводится в конструкцию фор для ассемблера, а у ассемблера в свою очередь, каждому оператору соответствует набор нулей и единиц... |
| Автор: EnrolL 22.4.2005, 22:11 |
| всё ясно, спасибо дрзья разжывали мне. |
| Автор: EnrolL 22.4.2005, 22:41 |
| всё ясно, спасибо дрзья разжывали мне. |
| Автор: batigoal 24.4.2005, 20:08 |
| Нашел наконец этот конспект. Там есть принципы построения ЭВМ, работы процессора, видов памяти и т.д., но здесь не прикрепить - больше мегабайта в архиве получается. Если есть у кого возможность, может, выложите на фтп? |
| Автор: dm9 28.4.2005, 19:45 |
| Может, выложим |
| Автор: batigoal 28.4.2005, 20:35 |
| ОК |
| Автор: dm9 3.5.2005, 02:53 |
| Сорри, совсем из головы вылетело. Вот ссылка на скачивание http://dm9.ru/vingrad/books/computer_architecture.rar Размер - 1182 КБ. |
| Автор: Амортизатор 13.2.2006, 00:32 |
| EnrolL, я думаю это как раз то, что тебе нужно. Компиляция, сборка. http://is.ifmo.ru/download/kmake.pdf Добавлено @ 00:34 Я попал сюда с поисковика и не обратил внимание на время последнего поста |
| Автор: xaoc2 28.4.2006, 03:03 | ||
А может быть с этого всё начиналось, с жёсткой логики? AND имеет на выходе4 1 только если на входе1 и входе2 будут 1, а OR если хотябы на один из входов4 и входе3 будет 1 в итоге получаются програмки: "Программа 1" Входа и биты на них выход [1] [2] [3] 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 "Программа 2" Входа и биты на них выход [1] [2] [3] 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 |