Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2014, 15:54   #21
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

lighting, твой вопрос пускает корни в архитектуру процесора, без фанатизма тут никак. Я преложил ассемблер именно как самое наглядное знакомство с процессорами. У Калашникова была очень интересная рассылка по ассемблеру.
ds.Dante вне форума Ответить с цитированием
Старый 16.05.2014, 15:57   #22
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как компьютер(компилятор ли, на уровне электричества ли, аль ещё что) понимает это самое if
Еще раз повторю: компилятор сравнивает обычный текст с известными ему словами.
В него встроен словарь зарезервированных слов, который ассоциирован с тем или иным действием.
Например:
Код:
If команда="if" then записать в файл байты с кодами 0Bh и C4h
If команда="for" then записать в файл байты с кодами 5Bh и 2Ch
Компилятору передается обычный текст, он разбивает его на слова, а потом слова таким образом сравнивает, и если сравниваемое слово найдено записывает в файл байт с соответствующим кодом.
А далее уже процессор эти записанные коды обрабатывает по точно такому же принципу. В нем как в шкафу с электроинструментами есть на полочках разные микросхемы. Каждая микросхема (допустим) нумеруется, и код 0Bh, поступивший в недра процессора говорит о том что нужно подать ток на микросхему по номеру 12.
Процессор просто плюет 5 вольт в 12-й провод.
Это грубый пример, но я не знаю как тебе еще объяснить.
Компилятор тоже грубо говоря "плюет вольты" в нужный "проводок", только то и отличие что провода его не нумеруются а имеют свои имена - if, for, call и т.д.
Цитата:
Просто я хочу понять, как пишется и обрабатывается язык программирования.
Так может стоит почитать тематические статьи? Возьми хотя-бы для затравки мою статью о простецком компиляторе.
Цитата:
каким выражением он понимает что это if
Выражением сравнения строк.
Цитата:
Разбирать целую отрасль науки с целью понять то, как компьютер преобразовывает слово написанное на С(if) в машинный код, или элек. сигнал(как пример), я не буду.
А вот это здря. Без таких знаний ты не сможешь ничего понять объясняй-не-объясняй. Это базовые знания.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.05.2014, 16:00   #23
lighting
Новичок
Джуниор
 
Регистрация: 16.05.2014
Сообщений: 9
По умолчанию

ds.Dante, т.е. именно на железе завязано все.
Тогда такой вопрос к тебе, ассемблер действительно даёт полный и исчерпывающий ответ на этот или около оный вопрос, или стоит копать(и изучать) чуть глубже? Возможно есть какая то специализация этого вопроса на более релевантном уровне.

Не хотелось бы затрачивать ресурсы на ассемблер ради неполноценного ответа.
lighting вне форума Ответить с цитированием
Старый 16.05.2014, 16:07   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.е. именно на железе завязано все.
Нет. Железо это самый низший уровень абстракции. Компилятор сам по себе не работает с железом, и не имеет к нему никакого отношения окромя списка кодов процессора.
Цитата:
ассемблер действительно даёт полный и исчерпывающий ответ
Нет не дает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.05.2014, 16:09   #25
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,672
По умолчанию

lighting, Вы можете объяснить, как в Вашей голове клетки понимают "да" и "если"?
То шутка, конечно, а тут все просто:
Есть несколько уровней организации:
1. аппаратная часть
2. программная:
а) низкоуровневая - по сути последовательность названий команд аппаратной части (ассемблер)
б) высокоуровневая - всякие if, while и прочее.
Комп. в аппаратной части понимает if на уровне установке флага - значения в спец. ячейки памяти микросхемы:
Установлен флаг - выполняется переход по указанному адресу. И все.
if(a == b)
может "выглядеть примерно так":
1) вычислили a-b, и если все биты 0 то устанавливается специальный флаг.
2) переход в зависимости от того установлен флаг или нет.
Но это конечно все зависит от конкретной архитектуры, т.е. на железо может отличаться, главное чтобы используемый "ассемблер" ему соответствовал.
Благими намерениями устлана дорога на programmersforum.ru

Последний раз редактировалось MihalNik; 16.05.2014 в 16:12.
MihalNik вне форума Ответить с цитированием
Старый 16.05.2014, 16:11   #26
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

lighting, я не знаю, твой вопрос действительно непонятно сформулирован. Но вся логика программ сводится до уровня машинных команд (язык ассемблера - это типа человекочитаемая форма двоичных кодов). Конкретно if существует как отдельный код ("если флаг установлен в 1, продолжить выполнение программы с другого места"); более сложные конструкции типа while реализуются из этих примитивных кирпичиков.

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

Последний раз редактировалось ds.Dante; 16.05.2014 в 16:23.
ds.Dante вне форума Ответить с цитированием
Старый 16.05.2014, 16:20   #27
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вся логика программ действительно сводится до уровня машинных команд
Не согласен. Интерпретаторы или виртуальные машины разве выполняют свои программы на уровне процессора? Это сам интерпретатор выполняется процессором, но логика программы для него дальше его понятий не заходит и напрямую к машинным командам не относится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.05.2014, 16:25   #28
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не согласен. Интерпретаторы или виртуальные машины разве выполняют свои программы на уровне процессора? Это сам интерпретатор выполняется процессором, но логика программы для него дальше его понятий не заходит и напрямую к машинным командам не относится.
Чаво? Эмуляторы, выполняют команды, на уровне машинных кодов, но только последовательно, по мере поступленя и расшивровки команд языка, более высокого уровня.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 16.05.2014, 16:26   #29
lighting
Новичок
Джуниор
 
Регистрация: 16.05.2014
Сообщений: 9
По умолчанию

Stilet, вы про статью "Компилятор домашнего приготовления"? Если нет, просьба указать ссылку. В статье которую вы предлагаете, есть объяснения процесса сравнения строк, о котором вы говорите?
Т.е. вы утверждаете что железо имеет смысл в данном аспекте только как некий базис списка кодов процессора(которые не стоит воспринимать принципиально в решении того же объяснения со случаем if)?

MihalNik, хорошо, но в таком случаи, что такое этот "указанный адрес"? Естественно подразумевается то, как будет он реально выглядеть в случаи с if-ом? Пример с if-ом не принципиален, аналогичные ему или просто более сложные тоже подойдут. Интересует сам процесс, пусть даже на уровне железа.
lighting вне форума Ответить с цитированием
Старый 16.05.2014, 16:27   #30
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не согласен. Интерпретаторы или виртуальные машины разве выполняют свои программы на уровне процессора?
Да. Интерпретаторы и джиттеры так или иначе переводят программу в двоичный код.
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04