С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
8 / 8 / 2
Регистрация: 10.12.2013
Сообщений: 148

Базовые классы .Net это всего лишь удобный способ вызова API функций ОС?

17.02.2015, 16:33. Показов 1842. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тема обширна, но решил создать ее здесь.
Не важно на каком языке писать программу, на Ассемблере, Си, С++ или C#, все равно все сводится к вызову одних и тех же API функций ОС, которым передаются необходимые параметры, при исполнении машинного кода нашей программы процессором. При вызове функции WinAPI ее скомпилированный код сначала загружается в память, а потом ему передается управление . .Net вызывает соответствующую функцию WinApi, Mono под Linux вызывает аналогичную функцию, но уже для Linux. То есть в основном Desktop-программа всего лишь определяет последовательность вызовов API и их параметры.

Всё программирование на языках .Net ограничено операционной системой, за пределы которой нельзя выйти, так как виртуальная машина CLR не может существовать без ОС. Так же ОС не даст нам сделать то, что она считает нам не надо делать, например перезаписать память чужого процесса. Но мы сможем обойти этот запрет если вызовем неуправляемый код из написанной нами библиотеки (на Си или С++) или даже возможно обойтись только функциями WinApi.

На Ассемблере, Си и С++ можно написать программу (если в ней не будет кода, вызывающего функции ОС), которая уже сможет работать вообще без ОС на компьютере, правильно ли я все понимаю или нет?
И в двух словах как происходит "программирование железа", например повышение напряжения или еще что-нибудь, ведь вряд ли для этого используются "базовые классы" или функции ОС?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2015, 16:33
Ответы с готовыми решениями:

Может ли c# работать без .NET, используя только самые базовые классы
1)Фреймворк .NET это просто библиотека, где собраны классы, на синтаксис самого c# он не влияет? 2)Может ли c# работать без .NET,...

На выбор загружаемой системы дано всего лишь 5 секунд и я часто не успеваю. Как и где это поменять?
1. При загрузке получаю 'Checking internet connections to start at boot..' Что с этим делать? 2. После установки Linux Mandrake у...

Вызов API функций в VB.NET
Такая у меня проблемка: Подскажите, кто сталкивался. Пробую пользоваться библиотекой p2smon.dll (Crystal Reports) для создания TTX файла...

5
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
17.02.2015, 16:58
Лучший ответ Сообщение было отмечено Metall_Version как решение

Решение

AleksyVB, в целом всё правильно, но объём кода в библиотеке .NET очень обширен и нельзя сказать, что .NET - это просто надстройка над WinAPI. Много кода занимает реализация разных уровней абстракции для удобства работы с системой; в WinAPI эти абстракций нет, да и вообще он написан большей частью на Си и организован не по принципам ООП.
Особо впечатляющим по объёму является код WPF - уровень абстракции он предоставляет очень высокий, хотя в итоге всё сводится к вызовам нативных методов DirectX и WinAPI.
Цитата Сообщение от AleksyVB Посмотреть сообщение
И в двух словах как происходит "программирование железа", например повышение напряжения или еще что-нибудь
На ассемблере. Зайдите в раздел Низкоуровневое программирование и увидите, на чём там люди пишут.

Добавлено через 3 минуты
Ещё по поводу последнего - ОС будет ограничивать программиста от многих действий с железом, а также сам процессор имеет своего рода "дополнительный слой": защищённый режим.
Protected mode
Что такое Protected Mode и с чем его едят
2
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
21.02.2015, 00:13
Цитата Сообщение от AleksyVB Посмотреть сообщение
как происходит "программирование железа"
Машинные коды команд процессора представляют собой числа, в которых содержится информация о роде выполняемой операции.
В целях максимального упрощения работы компьютера всё многообразие математических операций в процессоре сводится к сложению двоичных чисел. Поэтому главной частью процессора являются сумматоры (и полусумматоры - при сложении двоичных чисел в каждом разряде образуется сумма и при этом возможен перенос в старший разряд, а также полный одноразрядный сумматор и многоразрядный сумматор).

Базовые логические элементы:
- "И" логическое умножение
- "ИЛИ" логическое сложение
- "НЕ" инверсия
Любая логическая операция может быть представлена в виде комбинации трёх базовых. Логические элементы оперируют с сигналами, представляющими собой электрические импульсы. Если импульс есть - логический смысл сигнала 1, если импульса нет - 0. На входы логического элемента поступают сигналы-значения аргументов, на выходе появляется сигнал-значение функции.
Преобразование сигнала логическим элементом задаётся таблицей состояния (или таблицей истинности), соответствующей логической функции.

Важнейшей структурной единицей оперативной памяти, а также внутренних регистров процессора является триггер. Это устройство позволяет запоминать, хранить и считывать информацию размером в 1 бит. Триггер можно построить из двух логических элементов "ИЛИ" и двух элементов "НЕ".
В обычном состоянии на входы триггера подан сигнал 0, и триггер хранит 0. Для записи 1 на вход подаётся сигнал 1. Для того чтобы сбросить информацию на вход подаётся сигнал 1, после чего триггер возвратится к исходному "нулевому" состоянию.


PS: надеюсь смысл ясен - всё завязано на электрических импульсах, которые определяют состоянии ячеек памяти, с которых процессор выстраивает логическую цепочку из нулей и единиц.
2
8 / 8 / 2
Регистрация: 10.12.2013
Сообщений: 148
21.02.2015, 04:03  [ТС]
Цитата Сообщение от _lunar_ Посмотреть сообщение
PS: надеюсь смысл ясен - всё завязано на электрических импульсах, которые определяют состоянии ячеек памяти, с которых процессор выстраивает логическую цепочку из нулей и единиц.
Что-то конечно еще не совсем понятно, но в целом понятно. Я хотел понять как происходит программное обращение к железу на ассемблере, ведь для него нет никаких базовых классов для работы с объектами... насколько я понял все детали компьютера связываются шинами (разные шины могут иметь разную разрядность, отличную от разрядности процессора и разную скорость в гц, но главная шина - системная имеет одинаковую разрядность с процессором, разрядность процессора определяется разрядностью его регистров, то есть ячеек его сверхбыстрой памяти), по которым осуществляется общение, путем битовой передачи информации. Для каждого устройства выделяется постоянное адресное пространство (называется порт) в общем адресном пространстве, при программирование на ассемблере происходит обращение к адресному пространству устройства, изменение значений в нем, таким образом изменение значений в адресном пространстве устройства может изменять его реальные характеристики, например напряжение. Кроме того, на ассемблере можно осуществлять вычисления работая с регистрами процессора, а не с оперативной памятью, что существенно ускоряет вычисления.
Когда мы подключаем новое устройство к компьютеру, то он еще не знает как надо общаться с ним (точнее ОС не знает), для этого пишутся драйверы, которые описывают как воспринимаются импульсы и как на них реагировать, что нужно делать при получении той или иной битовой комбинации и какую битовую комбинацию нужно будет отправить в ответ.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
21.02.2015, 14:35
Цитата Сообщение от AleksyVB Посмотреть сообщение
как происходит программное обращение к железу на ассемблере
Машинный код это система команд конкретного процессора, которая интерпретируется непосредственно процессором. Команда, как правило, представляет собой целое число, которое записывается в регистр процессора. Процессор читает это число и выполняет операцию, которая соответствует этой команде.
Язык ассемблера это низкоуровневый язык программирования.
В отличие от машинных кодов, в языке низкого уровня каждой команде соответствует не число, а сокращённое название команды (мнемоника).

Иначе говоря - на ассемблере вы общаетесь с процессором на прямую, просто не нулями и единицами, а мнемокодом. Например, команда ADD это сокращение от слова ADDITION (сложение).

Цитата Сообщение от AleksyVB Посмотреть сообщение
разрядность процессора определяется разрядностью его регистров
Разрядность процессора определяется количеством двоичных разрядов, которые могут передаваться или обрабатываться процессором одновременно. Например разрядность процессора 64/36 - 64-разрядная шина данных и 36-разрядная шина адреса, т.е. процессор одновременно обрабатывает 64 бита, а адресное пространство составляет 2^36 = 64ГБ (при 64 битной версии ОС адресное пространство упирается в адресное пространство процессора, если то меньше 64 бит).
1
8 / 8 / 2
Регистрация: 10.12.2013
Сообщений: 148
21.02.2015, 18:54  [ТС]
Цитата Сообщение от _lunar_ Посмотреть сообщение
Например разрядность процессора 64/36 - 64-разрядная шина данных и 36-разрядная шина адреса
Вот здесь не понятно, по вашим словам получается что разрядность процессора зависит от разрядности шины данных? Я читал что были процессоры 32 разрядные, но с 64 разрядными шинами адреса и данных.

Семейство микропроцессоров Pentium
Микропроцессор Pentium выпускался с 1993 г. Имеет 32-разрядную архитектуру и 64-разрядную шину данных и адреса, за счет чего может адресовать до 16 Терабайт 264≈16*1018) оперативной памяти.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2015, 18:54
Помогаю со студенческими работами здесь

Наследование, базовые классы и производные классы
Добрый вечер.Задание: необходимо разработать поля и методы наследуемые из базового класса и собственные компоненты производных...

Удобный способ вывода информации из bd
Всем доброго времени суток, интересует такой вопрос: как можно легко выводить информацию из mysql на сайт? echo с html кодом не вариант....

Самый удобный способ рисовать
Требуется рисовать элементы постепенно, в ответ на события (нажал кнопку - появился прямоугольник) Раньше делал это по координатам через...

Срочно - стринги и вызов Win32 API функций (.NET)
Я новичек в VB.NET. В VB6 можно было декларировать стринг как Dim strDirectory as String * 256и потом передать в API функцию...

нужно чтобы функция располагалась до ее вызова, после ее вызова и в другом файле. Как это сделать?
#include <iostream> #include <conio.h> using namespace std; int n, *c; void fun(int a, int b) { for (int i = 0; i <...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru