Как записать в и читать из сетевой платы в x86 блоке?

Можно дать to_s основа кроме 10:

10.to_s(16)  #=> "a"

5
задан Kevin 3 December 2009 в 04:11
поделиться

4 ответа

Это зависит от конкретной микросхемы Ethernet MAC, с которой вы пытаетесь связаться. Даже микросхемы одного семейства часто имеют незначительные различия в том, как они работают. Вот почему современные ОС используют концепцию «драйвера»: производитель оборудования обычно пишет драйвер, потому что он знает оборудование, а драйвер обеспечивает перевод между оборудованием и тем, что ОС хочет видеть.

Часто можно получить документацию. от производителя микросхемы MAC, чтобы написать собственный драйвер. Опять же, вы должны точно знать, с каким чипом вы пытаетесь разговаривать, чтобы получить правильные характеристики. Некоторые микросхемы не имеют общедоступной документации, но обычно это не проблема микросхем Ethernet.

3
ответ дан 14 December 2019 в 19:16
поделиться

Самый простой ответ, хотя, вероятно, не то, что вы ищете, - написать код C на получите доступ к карте, скомпилируйте ее и просмотрите код, сгенерированный компилятором.

Код C, скорее всего, будет проходить через драйвер NIC напрямую или использовать библиотеку, такую ​​как winpcap . Например, встроенная поддержка сырых сокетов в Windows была отключена по соображениям безопасности.

Но это не лучший способ узнать, как работают сетевые карты. Для этого выберите таблицу популярных встроенных сетевых адаптеров, например LAN91C111 , и прочтите, как получить к ней доступ. Этот научит вас многому, как взаимодействовать с Этертетом в необработанном виде.

ИМХО, это все еще недостаточно хорошая песочница для изучения ассемблера. Для этого,

2
ответ дан 14 December 2019 в 19:16
поделиться

Вы можете использовать вызовы самой карты, используя инструкции ввода и вывода или что-то подобное. Каждая карта Ethernet отличается, поэтому вам потребуется документация от производителя.

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

0
ответ дан 14 December 2019 в 19:16
поделиться

Вам нужно будет писать на определенные адреса портов. Эта страница Wiki может помочь вам начать работу.
MemoryMappedIO

0
ответ дан 14 December 2019 в 19:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: