Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
6 / 10 / 2
Регистрация: 29.05.2015
Сообщений: 661

Как C работает с железом?

06.05.2016, 16:01. Показов 12233. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну,изучил основы C. Для чего он,так и не понял. Точнее, понял,что он для железа,драйверов и т.п дела. А вот где там работа с железом,я что-то не понял. Короче,можете кинуть литературу для дальнейшего развития? Вот есть у меня задачник Валединского-Корнева. Там одни алгоритмы. Алгоритмы,безусловно,важны. Но всё-таки я хочу понимать,как это работает на уровне железа,как это работает с железом,ОС и т.п.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.05.2016, 16:01
Ответы с готовыми решениями:

Не коректно работает WIN7 с железом: winfast N570SM2AA, Award BIOS, amd 64 x 2 4000+, ddr2 2x2Gb.
ез драверов работает норм . дрова ставлю отказывает то аператива .то жесткий. то видяха и тд. перед установкой провел тест на...

Как научиться работать с ПК и железом
Здравствуйте, подскажите с чего начать обучение,где взять материал, я очень хочу научиться работать с компьютером и всеми возможностями...

Как подружить Juniper с PFsense аля VPN сеть между бесплатным и проприетарным железом
Здравствуйте, уважаемые форумчане! Отправляю вам это сообщение "SOS" Задача у меня не особо тривиальная, копание в инете не дали...

26
48 / 46 / 18
Регистрация: 27.04.2016
Сообщений: 169
14.05.2016, 13:31
Студворк — интернет-сервис помощи студентам
NewNoob, стандартная библиотека СИ, плюс разные сторонние библиотеки.
0
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
25.05.2016, 20:21
Цитата Сообщение от NewNoob Посмотреть сообщение
Блин,я ничего не понимаю. Вот я изучил основы Си. Дальше что???
надо мыслить в контексте абстрактного языка, что бы понять.
Си позволяет организовать цикл ? Позволяет.
Позволяет загружать данные в память с клавы, с носителей ?
Позволяет.
Выгружать позволяет ? Позволяет.
Есть арифметика - есть. Есть ветвления -есть.
Т.е. это те кирпичики из которых можно сделать всё.
Но долго.
Для облегчения существуют библиотеки - где из кирпичиков сложенны готовые наборы на разные случаи.
В C# роскошная библиотека.
Я не изучал Cи, но имхо там не нужно особо много библиотек. Это системный язык.
Вам , грубо говоря, нужно знать, что и где и как прописать что бы воздействовать на систему как угодно. А что бы наблюдать - считать значение.
Внутри кода крутить логику средствами языка с этими значениями.
На мнемокодах ассемблера вообще очень мало "команд". Но из этого состоят все программы. Просто задача становится комбинаторной. Т.е. и 10(грубо говоря) команд процессора, можно сделать всё! Но не в одном блоке, а в листинге целой программы.
Что бы понять это, нужно изучать архитектуру процессоров, работу программ на низком уровне. Поверхностно знать. Что бы просто врубится. И не мучится такими вопросами. Это азы.

Цитата Сообщение от NewNoob Посмотреть сообщение
Откуда вообще берутся компиляторы
из-за вас приходится самому изучать вопрос что бы ответить. Я же новичек совсем.)))

Компилятор можно написать на другом языке, которого для этого хватит.
Допустим другой язык позволяет писать в файл бинарные данные. Т.е. писать данные без формата. А любой байт по любому смещению. Это уже хорошо. Ну и если другой язык с его компилятором, позволяет также
делать остальные базовые вещи: циклы, ветвления, ввод, вывод, ...То можно написать на этом языке
компилятор своего языка. Если в своем языке тоже будут как минимум аналогичные возможности языка-донора,
то можно написать даже компилятор, который потом окомпилирует сам себя на новом языке.
Можно написать компилятор на ассемблере, или фортране.

Берете древний язык и пишете на нем компилятор своего языка.
Потом на своем языке пишете компилятор своего же языка. Компилируете свой компилятор из исходников написанных на своем же языке.
Если возможности вашего языка оказались недостаточны, или вы не смогли сразу их реализовать из-за возможностей древнего языка, то пишите свой язык вер2,
на своем языке вер1, для своего ,уже компилятора (своего языка вер1). Затем компилируете на компиляторе своего языка вер1, свой новый компилятор вер2,для своего языка вер2. И тд.

Эти интересные извращения называются раскруткой компилятора.

мой вам совет от такого же новичка, если не моложе: изучайте сначала общий фундамент IT.
Иначе вы будете вечно искать команду "закрыть интернет и выйти во двор за хлебом".
1
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
25.05.2016, 20:32
Цитата Сообщение от Леманофф Посмотреть сообщение
На мнемокодах ассемблера вообще очень мало "команд".
да не скажи) одних только сдвигов штук 10
0
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
25.05.2016, 20:39
имхо первые записи в комп делались переключением тумблеров. 1-тумблер влево,0- тумблер в право.
Затем надоело это людям, и на тумблерном вводе, бухая водку, они таки запилили компилятор с ассемблера.
Пришлось припаят клаву, идешифраторы, таблицы символов и знакогенератор. А также принтер - ведь читать данные в бинаром виде, с лампочек очень неудобно.
На мнемокодах им было легче. Они уже не щелкали тумблерами, а шлепали по клаве MOV,JNZ...и т.д.
Но это тоже было тяжело, и они все равно жрали водку и ругались дома с женами.
Поэтому они запилили на мнемокодах,бухая водку и матерясь, с трудом, но компилятор языка более высокго уровня. Допустим Си. Написать Си на тумблерах было нельзя. Но можно было написать СИ на ассемблере. Ассемблер же можно было написать на тумблерах.
И понеслась.
P.s.
я не пьющий.

Добавлено через 1 минуту
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
да не скажи) одних только сдвигов штук 10
да я сам новичек. Хотел просто как можно более "на пальцах".
Имелось ввиду, что набор скромней. Или же сдвигами, инверсией и еще там всякими фишками получать то, что легко и наглядно получают на ЯВУ.
как -то так..
Спасибо что поправили.
1
6 / 10 / 2
Регистрация: 29.05.2015
Сообщений: 661
27.05.2016, 00:04  [ТС]
Леманофф, я просто не представляю,как из арифметики можно нарисовать WF или написать библиотеку для рисования,как бы идиотски ни звучало,что я написал)
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
27.05.2016, 08:02
Цитата Сообщение от NewNoob Посмотреть сообщение
как из арифметики можно нарисовать
потому что это геометрия. Окружности, прямые и тд
0
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
27.05.2016, 10:08
Цитата Сообщение от NewNoob Посмотреть сообщение
Леманофф, я просто не представляю,как из арифметики можно нарисовать WF или написать библиотеку для рисования,как бы идиотски ни звучало,что я написал)

Если записать по какому либо адресу устройства, значение, то какое либо устройство что-либо сделает.
Например если записать по определенному адресу видеоадаптера, определенное число, то в определенном
месте монитора отобразится точка определенного цвета. Как-то так.

Знать конкретное устройство прикладному программисту очень тяжело и писать очень тяжело.
Поэтому существую драйверы, ос и библиотеки.

Вообще библиотека+ядро ос+драйвер(а драйвер это модуль к ядру, или даже часть ядра) абстрагируют работу софта от железа. И софт "думает" что работает с одним единственным в мире, очень удобным железом. А вызовы функций ос и драйвера, обернуты в удобные функции этой библиотеки. Например рисования.

И получается, что ваша программа использует библиотеку, которая как бы расширяет встроенные средства вашего языка. Эти расширения - функции. Внутрь их вам лезть не нужно. Вы их просто вызываете с параметрами.
Внутри функций идут многочисленные обращения к функциям ос. ОС же в свою очередь спрашивает, как это сделать, у драйвера. Драйвер переводит эти запросы на конкретный низкоуровневый стандарт устройства и устройство исполняет вызовы драйвера.

Итого драйвер "знает" два языка: "язык" своего устройства , и язык функций ос. ОС "знает" язык виртуального абстрактного идеального устройства. Библиотека "знает" как удобнее работать с языком ос виртуального абстрактного идеального устройства.

Вы же, в свою очередь, знаете как работать с библиотекой.



(да пусть меня поправят опытные люди)

Добавлено через 6 минут
Так как растровое изображение это дискретное представление(вспоминаем работу драйвера с железом), то с помощью математики, в том числе, и методик
начертательной геометрии, можно написать функцию библиотеки, которая скажем рисует окружность с заданными параметрами и заполняет её заливкой. К примеру.
При этом в самой библиотеки могут быть слои логической абстракции.
например, как заполнить дискретный массив, что бы приближение его заполнения напоминало окружность.
Этот слой не связан с драйвером и железом.
Но вот слой прописи этого массива в функции ос, или в вызов драйвера, уже является слоем связи меж нижним слоем математики слоем работы с ос.

Добавлено через 1 час 56 минут
ТС, я полистал инет простой фразой "системное программирование на C под windows"
и ответ был получен "Книга: Системное программирование в среде Windows Джонсон М. Харт"

также там в аннотации было сказанно следующее" ...Единственным допущением, которое неявно присутствует во всем вышесказанном, является предположение о том, что читатели имеют опыт программирования на языке С."

Т.е. если вам интересно системное программирование, то вот вам и наглядное пособие.
Конечно поисковик выдает и другие результаты.
Уверен, что скорее всего из программ на C будут вызываться функции ОС.
Драйверы же на C будут писаться с неким драйверным SDK , благодаря которому в код драйвера будут вшиты вызовы и правила ос, естественно...
Эти вопросы вам лучше адресовать к системным программистам. Это прямо их территория)))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2016, 10:08

Хочу поставить новую видеокарту,как это сделать и какую лучше ставить с моим железом?
Мой комп -Athlon 2500+,оперативка 512mb.материнская плата ECS SIS735 DDR/SDRAM ATA 100 Sound lan ATX.видеокарта стоит Radeon 9200...

Как софтверно (или без какого либо профессионального оборудования) определить ошибку, связанную с железом?
Подробное списание проблемы: Компьютер подвисает (иногда несколько раз подряд) по абсолютно непонятной мне причине. 1)...

Узнать как у меня дела с железом, узнать какое плохое
Здравствуйте! Помогите мне пожалуйста со следующим вопросом, что мне бы поменять в первую очередь? Материнская плата: Pegatron...

Странности с железом
Недавно купили системный блок и через 3 дня началось: при включении компа утром пищит и на мониторе "Нет сигнала", после...

Взаимодействие с железом
До сих пор не разу не писал программы которые бы как либо через консоль взаимодействовали с функциями машины (Мои программы кроме чтения и...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru