Ассемблер и программирование. - Компьютерные вопросы

Вопрос Ассемблер и программирование.

Регистрация
25 Мар 2013
Сообщения
92
Репутация
0
Спасибо
0
Монет
0
Здравствуйте. Скажите пожалуйста, может мне кто нибудь обьяснить следующие вещи:

1) вот к примеру процессор, понимает свой машинный язык, и когда мы что то нажимаем, будь то клавиатура или мышка, он видет это в двоичной прописанной ему системе кода, а вот на сам экран уже переводит непосредственно сам язык программирования. Вопрос? К примеру виндоус написан на каких то языках, и этот язык транслируется это в машинный код так?
2) Почему язык ассемблер на каждом процессоре работает по своему
 
Регистрация
28 Июл 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Вот именно из-за разной архитектуры, у ассемблера очень плохо с переносимостью. Для каждой свой асм
 
Регистрация
21 Сен 2013
Сообщения
91
Репутация
0
Спасибо
1
Монет
0
Когда разрабатываю процессор, разрабы придумывают свои "правила" работы процессора. И естественно свои команды для процессора. Именно на этих командах и работает процессор. Так как на этих командах тяжело программировать (относительно тяжело) и нужно много написать для небольшой программы, используют другие языки программирования, которые более логичны для человека. И на них легче и быстрей написать программу, чем на ассемблере.
 
Регистрация
8 Сен 2013
Сообщения
97
Репутация
8
Спасибо
1
Монет
0
Для компилятора важно лишь две вещи: 1) Архитектура процессора 2) Операционная система. Компилятор переводит высокоуровневый код С++ в машинный согласно этим двум пунктам. Для первого пункта из-за разных архитектур процессоров может быть разные операции (опкоды), разные регистры. То есть написав например так for(unsigned i = 0;i<10;++i) printf("%d",i); Машинный код для различных архитектур будет совершенно другим. Для второго пункта, важен такой пункт как соглашение о вызове (calling convention), это означает, каким образом будет реагировать компилятор на передачу управления функциям, то есть какие регистры использовать как параметры, сколько параметров передавать через стек, кто будет очищать стек после вызова функции (вызываемая функция либо вызывающая функция). Также для второго пункта важно представление машинного кода в двоичных данных, например объектный код - некоторое промежуточное представление машинного кода из высокоуровневого с относительными ссылками для последующей работы линковщика. Линковщик уже строит структуру исполняемого модуля согласно ОС, порядком сегментов, относительных ссылок и т. д.
 
Регистрация
29 Дек 2013
Сообщения
101
Репутация
-3
Спасибо
0
Монет
0
Ты уже несколько раз задавал подобные вопросы. А ответы не уяснил. Ты думаешь с твоей этакой смекалкой ты что-то поймешь в ассемблере на проекте "Ответы"?
 
Сверху Снизу