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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2011, 18:44   #11
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Но ведь в самой системе есть же код на Си, который и отвечает за гудок, и в другой ОС (Линукс например). Все они имеют доступ к этому динамику. Таким образом, получается, что можно контролировать динамик на Си. Вот меня и интересует этот прямой доступ к динамику.
Артэс вне форума Ответить с цитированием
Старый 27.01.2011, 18:47   #12
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

мало ли чего в ОС есть, не пустят тебя к портам, читай ссылку
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 27.01.2011, 18:50   #13
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Но ведь в самой системе есть же код на Си, который и отвечает за гудок, и в другой ОС (Линукс например). Все они имеют доступ к этому динамику. Таким образом, получается, что можно контролировать динамик на Си. Вот меня и интересует этот прямой доступ к динамику.
Этот код на Си обращается к железу на очень низком уровне, более того, из привилегированного режима. Из обычного защищённого режима, непосредственное обращение к железу запрещено. Сколько раз нужно повторить, что нельзя воспроизвести звук в обход системы?) Всё равно придётся использовать функции Windows, хотя бы для того чтобы запросить необходимые привилегии для работы с железом.
netrino вне форума Ответить с цитированием
Старый 27.01.2011, 18:50   #14
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

да, я прочитал, просто уже после того, как написал сообщение. Тогда меня интересует, на каком языке программирования осуществляется управление этим динамиком? оно возможно на Си? или только на АСМ?
Артэс вне форума Ответить с цитированием
Старый 27.01.2011, 18:53   #15
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

да хоть на бейсике. важен не язык, а кольцо защиты, на котором твой код будет работать
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 27.01.2011, 19:01   #16
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

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

До этого подобное я выполнял вручную. Записывал сами машинные команды в загрузочный сектор дискеты, после чего, загружая компьютер с этой дискеты, он успешно выполнял код (печатал Hello World на экране).

Так же можно на АСМ написать такой код, и скомпилировать в машинный... но вот можно ли такое на Си сделать?
Артэс вне форума Ответить с цитированием
Старый 27.01.2011, 19:04   #17
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

и даже от уровня привилигей тоже не изменяет многое, лишь АПИ меняются(ну и можно действовать в его обход но зачем?)
Цитата:
Тогда меня интересует, на каком языке программирования осуществляется управление этим динамиком? оно возможно на Си? или только на АСМ?
хоть Си/Си++, хоть Дэлфи, хоть асм и тп.
дело ни в том на каком языке, а в том какие функции использовать.
чтоб пикнуть, достаточно #include <windows.h>
Beep(<два параметра>);
вывод звука (любого, на динамики) чуть сложнее, зависит от конкретных целей.

винапи по большей части процедурная именно ради совместимости с большей частью языков.
Цитата:
До этого подобное я выполнял вручную. Записывал сами машинные команды в загрузочный сектор дискеты, после чего, загружая компьютер с этой дискеты, он успешно выполнял код (печатал Hello World на экране).

Так же можно на АСМ написать такой код, и скомпилировать в машинный... но вот можно ли такое на Си сделать?
в принципе можно, но там про винапи забудьте.
1)загрузчик лучше всего на асме.
2)далее можно и си
3)тырк
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 27.01.2011 в 19:07.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.01.2011, 19:07   #18
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> но вот можно ли такое на Си сделать?

можно, чё ж нельзя. компилятор только надо взять совсем старый, досовый
и не юзать никаких библиотек, рантаймов и прочих радостей жизни
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 27.01.2011, 19:09   #19
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
можно, чё ж нельзя. компилятор только надо взять совсем старый, досовый
и не юзать никаких библиотек, рантаймов и прочих радостей жизни
ничего подобного, gcc компилим, далее преобразуем обьектник в бинарник, линкером.(насчет библиотек и тп, согласен, все надо или с нуля, или те версии которые не зависимы)

ТС, скорее всего придется писать с асм вставками тогда, ибо в libc нет готовых функций на все случаи жизни.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.01.2011, 19:10   #20
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Ну а о каком ВинАпи может идти речь, когда компьютер загружает собственную программу?)

Я уже ранее читал, советуют загрузчик на АСМ писать, а далее код на Си можно... но значит все-таки можно и загрузчик на Си сделать? Я почти не знаю языка АСМ, и хочется сразу загрузить и выполнить программу, написанную на чистом Си. Так, для удовольствия. Хочется получить прямой доступ к машине
Артэс вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звук Звууууук Звук ... не рабоает звук.. Zvuuuuk Компьютерное железо 2 22.01.2011 17:53
Тюнер для гитары в делфи. (Считывать с микрофона звук и выводить какой частоты этот звук). Серего Мультимедиа в Delphi 8 12.01.2011 14:39
Звук 5.1 Air Свободное общение 4 20.05.2010 11:29
Звук xakkkkker Мультимедиа в Delphi 4 05.05.2008 08:13
звук и делфи, левый правый звук snusmumric Win Api 2 29.10.2007 11:10