Я знаю, що це дуже поширене питання. Але я маю інший кут на увазі. Я просто спробую це сформулювати тут.
Як я знаю, кожна інструкція, яку виконує процесор, є машинною мовою, і все, що може зробити CPU, - це робити деякі арифметичні операції завдяки ALU та його транзисторам (якщо ми переходимо на апаратний рівень).
Однак це простіше набрати, ніж зрозуміти. Отже, якщо все процесор робить додавання, віднімання тощо, то як програма, скажімо, програма JAVA, що говорить надрукувати Hello World, виконана з цими арифметичними операціями?
Я маю на увазі, як ця програма перетворюється на щось, що є лише доповненням для процесора?
PS Якщо це питання не стосується цього веб-сайту, то я прошу вибачення.
----- Частина друга -----
Добре. Дякую всім, що відповіли на це швидко та з цим ентузіазмом. Я подумав, що краще трохи змінити моє запитання, ніж піти і коментувати всі відповіді і задавати їх ще раз.
Так ось воно.
По-перше, всі відповіли конкретно на прикладі wrt Hello World. Це моя вина. Я мав би зберегти це загальне. Приклад світу привіт викликає питання про вихідні пристрої та те, як його обробка не обмежується лише процесором, що справедливо підводиться у ваших відповідях.
Також багато з вас помітили, що процесор робить більше, ніж просто доповнення. Я з цим згоден. Я просто не писав цього і припускав це до кінця. Як я розумію, це процес:
читати інструкцію з пам'яті (використовуючи шини даних та адреси та лічильник програм)
- зберігати дані в реєстрі всередині процесора
- Тепер ALU виконує арифметичні операції, звичайно після розшифровки інструкції, або виконує стрибок, якщо це інструкція if if like
- А потім спілкування з іншими ресурсами, якщо потрібно, наприклад, із пристроєм виведення тощо. Процеси поза цим поки що тривіальні.
Тож у step3, де CPU розшифровує інструкцію і вирішує зробити арифметичну операцію (тут ми припускаємо, що немає жодної іншої операції, як зробити стрибок поточної інструкції. Тому що арифметичні операції в основному робляться .. тому ми будемо дотримуватися цього ) Тут закінчується моя візуалізація. Як інструкція з моєї програми - це просто арифметична операція для процесора. Він виконує цю арифметичну операцію і ця інструкція служить своєму призначенню.
Я сподіваюся, що цього разу я зрозумів себе.
PS Я приймаю велике припущення, що ALU просто не обмежується фактичною арифметичною операцією, яку ми виконуємо в наших програмах, а скоріше вона виконує всі інструкції, які зараз є у двійковій формі, додаючи або віднімаючи і т. Д., Щоб отримати результат, який вони мають на увазі щоб отримати. Якщо я тут помиляюся, ніж відповіді нижче, правильно відповіді на моє питання.