Gewusst wie: schreiben & Lesen von der Netzwerk-Karte in x86 Assembler?
weiß jemand, wie man den Zugang zu Geräten wie einem ethernet-Anschluss am mainboard oder auf einer pci-Karte?
Gibt es spezielle Register? Opcodes? Muss ich um einen Anruf an das OS? Wenn ja, wie?
Vielen Dank im Voraus.
- Was versuchen Sie zu tun? Einen Treiber schreiben? Ein Treiber ist wirklich der einzige Ort, diese Art von Zugang ist geeignet... welches OS?
- Ich möchte einfach ein wenig Experimentieren-vielleicht übertragen Sie ein Paket oder zwei? Ich bin in einer Baugruppe (MIPS) natürlich jetzt und auch tun die Arbeit in Netzwerken, research lab, so dass ich dachte, es wäre konvergieren die beiden. Ich in Ordnung sein würde, die Entwicklung auf allen gängigen OS, sondern prefs gehen würde, um vom Mac, Linux, Win.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt von der jeweiligen Ethernet-MAC-chip, den Sie versuchen zu sprechen. Sogar die chips in der gleichen Familie haben oft kleine Unterschiede, wie Sie funktionieren. Dies ist der Grund, warum moderne Betriebssysteme haben die "Treiber" - Konzept: die hardware-Hersteller in der Regel die Treiber schreibt, weil Sie wissen, der hardware und der Treiber bietet eine übersetzung zwischen der hardware und was die OS sehen will.
Können Sie oft erhalten Sie Dokumentation aus der MAC-chip-Hersteller schreiben Ihre eigenen Treiber. Wieder, Sie haben um genau zu wissen welcher chip, den Sie versuchen zu sprechen, um die richtigen specs. Einige chips haben keine öffentliche Dokumentation, aber das ist in der Regel nicht ein problem mit der Ethernet-chips.
Die einfachste Antwort, wenn auch wahrscheinlich nicht das, was du suchst, wäre zu schreiben, der C-code, um den Zugriff auf die Karte, kompilieren Sie es, und sehen Sie den code, der vom compiler erzeugt.
Den C-code wird wahrscheinlich gehen Sie durch die NIC-Treiber direkt, oder benutzen Sie eine Bibliothek wie winpcap. Built-in support für raw-sockets auf Windows, zum Beispiel, wurde aus Sicherheitsgründen deaktiviert.
Aber dies ist nicht der beste Weg, um zu lernen, wie NICs arbeiten. Für dass, Sie sich für ein Datenblatt eines gängigen embedded NIC wie LAN91C111 und Lesen Sie, wie Sie darauf zugreifen. , Dass wird Ihnen beibringen, eine Menge über die Schnittstellen Eterthet in der rohen Weise.
Diese noch nicht gut genug sandbox zu studieren Assembler-in, IMHO. Für die, die einfach zu implementieren, ein paar kleine Algorithmische Programme in der Montage - wie binary tree search.
Können Sie Anrufe auf der Karte selbst, mit inupt-und output-Anweisungen oder etwas ähnliches. Jede ethernet-Karte ist anders, so müssen Sie der Dokumentation des Herstellers.
Den nächsten level-up ist die DOS-Funktion aufruft, vorausgesetzt, Sie sind usuing Windows. Diese ermöglicht Ihnen den Zugriff auf eingeschränkte Funktionen der ethernet-Karte mit standard-MS-DOS-Aufrufe. Sie finden diese in alten MS-DOS-Dokumentation. Die meisten von Ihnen arbeiten immer noch auf spätere Versionen von Windows, wenn ich mich nicht Irre.
Müssen Sie schreiben, um bestimmte port-Adressen. Diese Wiki-Seite könnte Ihnen den Einstieg.
MemoryMappedIO