Laden...

C Simulator in/mit C#

Erstellt von all-finder vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.425 Views
A
all-finder Themenstarter:in
30 Beiträge seit 2007
vor 12 Jahren
C Simulator in/mit C#

Hallo beisammen!

Wir entwickeln unsere Projekte in C für verschiedene Zielplattformen. Um ein Laufzeitsystem zu emulieren würden wir unser C-Projekt in einer C#-Desktop Umgebung einbetten (wollen). D.h. die HW-Schicht und Ein/Ausgabe würden wir uns emulieren (in C#), die Applikation wird in C (unverändert) eingebettet.

Hat das schon mal jemand gemacht? Kann ich in einer Projektmappe ein C-Projekt (z.B. als dll) in mein C#-Projekt einbinden und Compilerübergreifend debuggen? Oder steht mir dies nur per C und C++ per Visual Studio zur Verfügung?

Grüße,

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo all-finder,

grundsätzlich ist es natürlich möglich, einen Emulator zu schreiben und Hardware zu emulieren. Ich denke aber nicht, dass C# für ein solches Projekt die geeignete Sprache ist. Ich würde davon ausgehen, dass für einen solchen Emulator C wesentlich geeigneter ist und zwar nicht in erster Linie, weil dann die Schrittstellenproblematik C# zu C wegfällt, sondern weil so ein Emulator sehr hardware-nahe Programmierung erfordern wird.

herbivore

M
1.439 Beiträge seit 2005
vor 12 Jahren

Gibt es keine bereits verfügbaren Simulatoren für eure CPU? Je nach Komplexität der Plattform und euren Anforderungen(z.B. Cycle genau) kann so ein Simulator sehr aufwendig werden.
Auch ich würde hier eher nicht C# verwenden, sondern SystemC verwenden.

5.742 Beiträge seit 2007
vor 12 Jahren

D.h. die HW-Schicht und Ein/Ausgabe würden wir uns emulieren (in C#), die Applikation wird in C (unverändert) eingebettet.

Wenn "Ein/Ausgabe" viel mit GUI zu tun hat, ist C# vielleicht doch keine so schlechte Wahl.
Allerdings sollte man dann nicht direkt aus C# auf die C-Libraries zugreifen, sondern eher noch einen Wrapper in Managed C++ dazwischenschieben. Dort kann ja dann auch die eigentliche Emulierung stattfinden.

N
60 Beiträge seit 2010
vor 12 Jahren

Ich denke auch das du den eigentlichen Emulator in C/C++ schreiben solltest. Wenn du möchtest kannst du dann die Ein-/Ausgabe in C# bauen und mittels IPC mit dem Emulator kommunizieren lassen.

Grüße

5.742 Beiträge seit 2007
vor 12 Jahren

und mittels IPC mit dem Emulator kommunizieren lassen.

Warum so komplex?
Managed C++ ist da deutlich komfortabler.

N
60 Beiträge seit 2010
vor 12 Jahren

Ich finde das ist nicht so viel komplizierter und trennt diese beiden Sachen sehr schön. Wenn man die UI vom Emulator komplett trennt ist man gezwungen eine ordentliche Schnittstelle zu definieren. Damit ist es später möglich z.B. automatisierte Tests mit Hilfe des Emulators durchzuführen. Es ist auch einfacher die Benutzeroberfläche zu tauschen.

All dies ist auch möglich wenn man direkt oder per Wrapper auf den Emulator zugreift.

Außerdem spart man sich den Managed C++ Wrapper (ich mag Managed C++ nicht).

Ich habe meinen Satz aber extra mit "Ich denke auch..." (wobei ich mehr etwas in die Richtung "ich würde es so: ... angehen" ausdrücken wollte).

Schöne Grüße
Nils