Autor Thema: Batch - Dateiverwaltung  (Gelesen 18820 mal)

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« am: 28. December 2012, 10:58 »
Da ich noch nicht mit dem OS klarkomme und meine Assembler Kenntnisse noch nicht ausreichen (möchte es komplett in ASM schreiben), habe ich gedacht ich mache mal wider was in cmd aus langeweile.
Hier erstmal der Code:
@echo off

type Start1.txt

:A
set /p eingabe="Eingabe: "
if "%eingabe%" == "1" GOTO C
if "%eingabe%" == "2" GOTO D
if "%eingabe%" == "3" GOTO E
if "%eingabe%" == "4" GOTO F

:B
set /p repeat="Möchten Sie noch eine Aktion Durchführen Ja/Nein= "
if "%repeat%" == "Ja" GOTO A
if "%repeat%" == "Nein" exit

:C
set /p copie="Geben Sie den Pfad zu der zu kopierenden Datei an: "
XCOPY %copie% C:\Users\%username%\Desktop\Speicher_Verwaltung\Puffer
GOTO B
:D
set /p load="Geben Sie den Namen der zu setzenden Datei an: "
set /p paste="Geben Sie den Pfad wo die Datei gesetzt werden soll= "
XCOPY C:\Users\%username%\Desktop\Speicher_Verwaltung\Puffer\%load% %paste%
GOTO B
:E
set /p take="Geben sie den Pfad der zu verschiebenden Datei an: "
set /p put="Geben sie den Pfad an, nach der die Datei verschoben werden soll: "
MOVE %take% %put%
GOTO B
:F
set /p delete="Geben sie den Pfad der zu löschenden Datei an: "
DEL %delete%
GOTO B

Nun als erstes gibt dass Programm aus wie man es bedient, und danach kann man eine Option auswählen.
Egal was man auswählt es funktioniert, und sobald diese Operation ausgeführt ist, fragt er nach ob man noch eine
starten möchte. Dann sollte er eigentlich wider zu :A springen damit man wider auswählen kann welche operation man machen will, aber
stadtdessen fängt er wider mit :C an, anstatt mit :A. kann mir jemand sagen warum? Falls ich mich nicht deutlich ausgedrückt habe,
kann ja jemand mal selber ein Paar operationen ausführen.
(Ihr braucht einen Ordner "Speicher_Verwaltung", darin befindet sich die Kern.batch mit dem obigen code, dann fehlt noch ein Puffer-Ordner(leer), und dann eine Start1.txt erstellen mit dem Text:

Willkommen bei der Speicher-Verwaltung 0.1!
----------------------------------------------
Um eine Datei zu kopieren geben Sie die 1 ein.
Um eine Datei einzufügen geben Sie die 2 ein.
Um eine Datei zu verschieben, geben Sie die 3 ein.
Um eine Datei zu löschen, geben Sie die 4 ein.
----------------------------------------------

Oben ist die Anleitung da ich nicht weis ob oder wie man hier dateien hochladen kann.
Noch ein Problem: Wenn ich nein eingebe bei :B, dann macht er auch wider einfach bei kopieren weiter und beendet das Programm nicht.
Manuel

« Letzte Änderung: 28. December 2012, 11:41 von Manello »

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 28. December 2012, 15:16 »
Zwei Sachen fallen mir auf:

Du behandelst nicht den Fall wenn der Nutzer was anderes als 1, 2, 3 oder 4 eingibt. Da solltest du vielleicht unter if "%eingabe%" == "4" GOTO F ein GOTO A schreiben. Das selbe bei :B.

Deine if-Abfragen sind abhängig von der Groß- und Kleinschreibung. Das heißt, wenn der Nutzer "ja" statt "Ja" eingibt, wird das nicht erkannt. Du solltest /I als Parameter beim if angeben, um den Vergleich case-insensitive zu machen. if /i "%repeat%" == "Ja" GOTO A

Außerdem könntest du dir mal den Befehl CHOICE angucken. Der kann eventuell deinen Code etwas vereinfachen.
Dieser Text wird unter jedem Beitrag angezeigt.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 28. December 2012, 22:12 »
Außerdem könntest du dir mal den Befehl CHOICE angucken. Der kann eventuell deinen Code etwas vereinfachen.
Microsoft-Portablitätsfoo, weil ich grad Spaß hab: CHOICE gibt es nicht bei Windows 2000/XP, sonst bei allen DOS-/Windows-Versionen ab MS-DOS 6.0 (1993) einschließlich Vista und 7.
« Letzte Änderung: 28. December 2012, 22:14 von Svenska »

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 28. December 2012, 22:58 »
Außerdem könntest du dir mal den Befehl CHOICE angucken. Der kann eventuell deinen Code etwas vereinfachen.
Microsoft-Portablitätsfoo, weil ich grad Spaß hab: CHOICE gibt es nicht bei Windows 2000/XP, sonst bei allen DOS-/Windows-Versionen ab MS-DOS 6.0 (1993) einschließlich Vista und 7.
Dann muss das wohl mal jemand in Batch nachprogrammieren ;)
Dieser Text wird unter jedem Beitrag angezeigt.

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 31. December 2012, 16:41 »
So sieht jetzt der Code aus, alle Probleme gelöst:

@echo off

type C:\Users\%username%\Desktop\Speicher_Verwaltung\Data\START.txt

:A
set /p eingabe="Eingabe: "
if "%eingabe%" == "1" GOTO C
if "%eingabe%" == "2" GOTO D
if "%eingabe%" == "3" GOTO E
if "%eingabe%" == "4" GOTO F
if /i "%eingabe%" == "%1%" GOTO G

:B
set /p repeat="Möchten Sie noch eine Aktion Durchführen Ja/Nein= "
if /i "%repeat%" == "Ja" GOTO A
if /i "%repeat%" == "Nein" exit
if /i "%repeat%" == "%1%" GOTO G

:C
set /p copie="Geben Sie den Pfad zu der zu kopierenden Datei an: "
XCOPY %copie% C:\Users\%username%\Desktop\Speicher_Verwaltung\Puffer
GOTO B

:D
set /p load="Geben Sie den Namen der zu setzenden Datei an: "
set /p paste="Geben Sie den Pfad wo die Datei gesetzt werden soll= "
XCOPY C:\Users\%username%\Desktop\Speicher_Verwaltung\Puffer\%load% %paste%
GOTO B

:E
set /p take="Geben sie den Pfad der zu verschiebenden Datei an: "
set /p put="Geben sie den Pfad an, nach der die Datei verschoben werden soll: "
MOVE %take% %put%
GOTO B

:F
set /p delete="Geben sie den Pfad der zu löschenden Datei an: "
DEL %delete%
GOTO B

:G
type C:\Users\%username%\Desktop\Speicher_Verwaltung\Data\ERR_01.txt
GOTO A

Jedoch ist dass ständige eintippen usw. sehr umständlich. Also wollte ich eine
GUI mit der Bat verknüpfen und habe es mit wizards versucht. Dieser GUI creator
ist extra für bat dateien, jedoch funktioniert dieser nicht. Ich finde jedoch keinen anderen kostenlosen,
und wollte fragen ob ihr da einen kennt.

Noch eine Sache nebensächlich: Könnte ich dass auch mit Assembler verknüpfen und dann auch die
kopien extern von windows in den RAM/ROM legen lassen?

Mfg Manuel
« Letzte Änderung: 31. December 2012, 16:43 von Manello »

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 31. December 2012, 16:49 »
Wenn du eine GUI willst, solltest du eine richtige Programmiersprache verwenden. Du kannst dir ja mal eine der Express Editionen von Visual Studio 2010 anschauen.

Noch eine Sache nebensächlich: Könnte ich dass auch mit Assembler verknüpfen und dann auch die
kopien extern von windows in den RAM/ROM legen lassen?
Die Frage verstehe ich nicht. Aber höchstwahrscheinlich ist die Antwort nein.
Dieser Text wird unter jedem Beitrag angezeigt.

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 31. December 2012, 17:02 »
Muss ich bei Visual Basic viel lernen? Oder muss ich da nur bestimmte befehle können?

Zu der Frage wo du nicht verstehst:

Ich möchte die Datei sozusagen mit einer .ASM verknüpfen, um somit ohne windows zu kopieren und den RAM / ROM belegen zu können,
oder auch evt. für "Advance Users" dass diese Speicherbelegungen auf dass genauste zurück verfolgen können.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 31. December 2012, 17:16 »
Muss ich bei Visual Basic viel lernen? Oder muss ich da nur bestimmte befehle können?
Kommt drauf an, wie gut du programmieren kannst. Im Prinzip ist es relativ einfach, weil die Entwicklungsumgebung bei vielen Sachen die Arbeit abnimmt.

Ich möchte die Datei sozusagen mit einer .ASM verknüpfen, um somit ohne windows zu kopieren und den RAM / ROM belegen zu können,
oder auch evt. für "Advance Users" dass diese Speicherbelegungen auf dass genauste zurück verfolgen können.
Also willst du ein Betriebssystem schreiben. Wenn du bereit bist da zwei Jahre oder mehr dran zu arbeiten, könnte das klappen. Du müsstest halt ein Grundgerüst für ein Betriebssystem (Speicherverwaltung, Prozessverwaltung, ...) schreiben, dann Festplattentreiber und Dateisystemtreiber für FAT32 implementieren, und dann eine Umgebung erstellen in der du Programme ausführen kannst.
Dieser Text wird unter jedem Beitrag angezeigt.

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 31. December 2012, 18:16 »
Danke für die Antwort.
Dass mit dem Betriebssystem hatte ich schon vor, aber ich warte lieber noch etwas.
Ich habe aber eher gemeint, wärend windows läuft speicher selbst verwalten zu können,
dass man sozusagen windows einen teil nimmt und selber für dass Programm benutzt ohne dass
Windows dazwischen Funkt

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 01. January 2013, 03:52 »
Windows ist ein modernes Betriebssystem. Dem kannst du die Speicherverwaltung nicht nehmen. Du darfst aber Windows nach einem Stück Speicher fragen (z.B. in C mit malloc()). Dadrin darfst du tun, was du willst, aber der Speicherbereich bleibt trotzdem Eigentum von Windows.

Betriebssysteme kann man in verschiedenen Programmiersprachen schreiben, manche (z.B. Visual Basic) eignen sich dafür allerdings weniger - kannst du aber in einer Sprache programmieren, lernen sich weitere Sprachen einfacher. Wenn du von Programmieren keine Ahnung hast, solltest du das aber erst lernen. Dafür eignen sich solche Sprachen gut.

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 01. January 2013, 21:13 »
Alles klar, ich werde mir mal dann VB ansehen.
Ich bräuchte sowieso auch eine nicht so "Hardware nahe" Sprache, weil ich behersche nur TASM ( Turbo Assembler) und an batch bin ich gerade drann.
Da die Wiki für x86 prozessoren für C geschrieben ist, und ich viel zeit für die übersetzungen brauchen würde, warte ich lieber noch etwas, weil alleine wird es etwas schwer, etwa z.B. sich mit listen oder sich mit vergleichen abzugeben um den code in Assembler zu übersetzen.  Falls evt. jemand von Euch Interesse hätte, mit mir auch für die Comunity dass Projekt "x86 OS" in der wiki auf assembler zu übersetzen, wäre ich offen. Das wäre auch ein Vorteil für die Comunity und ein Fortschritt besser als diese andere "OS Wiki" die ihr dort erwähnt zu werden. 
Dazu könnten wir es in ASM und TASM übersetzen was noch etwas Freiraum gäbe.
Nicht dass ihr jetzt denkt ich will es nur für meinen Nutzen, damit ich es besser verwenden kann, nein es soll auch für
die Foren Gemeinschaft sein.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 02. January 2013, 15:32 »
Hallo,

Ich bräuchte sowieso auch eine nicht so "Hardware nahe" Sprache, weil ich behersche nur TASM ( Turbo Assembler) und an batch bin ich gerade drann.
TASM ist tot und Batch ist eine eher primitive Scriptsprache. Mit beiden landest du in einer Ecke, die mit "programmieren" nichts zu tun haben. Ich möchte sie nicht als nutzlos bezeichnen, aber es kommt dem ziemlich nahe. Zumal die meisten TASM-Bücher, die ich kenne, sich auf DOS-Programmierung beziehen: DOS ist seltener in freier Wildbahn zu finden als so manches Tier auf der roten Liste...

Wenn du hardwarenah programmieren können willst, dann lerne C und vergiss TASM. Ist dir Hardware-Nähe nicht so wichtig, dann gibt es neben C und C++ noch viele andere Programmiersprachen, die weit verbreitet sind und dir in der Zukunft auch was bringen (besonders Java und diverse Web-Sprachen wie PHP und JavaScript, aber auch Pascal-artige wie Delphi und FreePascal). VB ist einfach und schnell zu lernen, andere Vorteile sehe ich dort aber nicht mehr (ich habe selbst mit VB angefangen). Als Einstieg ist es gut geeignet.

Da die Wiki für x86 prozessoren für C geschrieben ist, und ich viel zeit für die übersetzungen brauchen würde, warte ich lieber noch etwas, weil alleine wird es etwas schwer, etwa z.B. sich mit listen oder sich mit vergleichen abzugeben um den code in Assembler zu übersetzen.
Weil wir alle faule Menschen sind, lassen wir diese Übersetzung auch von einem Compiler erledigen, der kann das eh besser. Das Wiki in einen speziellen Assembler-Dialekt auf einer einzelnen, veralteten(*) Prozessorarchitektur zu übersetzen, empfinde ich als Rückschritt. C-Code ist universeller und besser lesbar.

(*) TASM ist antik. Die modernen Features von x86-CPUs kannst du damit nicht nutzen.

Nicht dass ihr jetzt denkt ich will es nur für meinen Nutzen, damit ich es besser verwenden kann, nein es soll auch für die Foren Gemeinschaft sein.
Ich verkneif mir mal einen Kommentar dazu.

Gruß,
Svenska

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 02. January 2013, 15:46 »
Naja ok, ich habe eben mit TASM angefangen. Batch war mir so aus langeweile in den sinn gekommen, aber wenn ihr
sagt dass man mit C auch sehr gut bs schreiben kann, vertraue ich euch mal.
Ahja ne frage zu OS:
Sind wirklich bin dateien 101 code?
Und ist es egal welche sprache ich benutze, werden alle gleich schnell vom Prozessor ausgeführt?
Wird z.B. ein OS auf C basis schneller ausgeführt als auf TASM basis? (Tasm müsste doch schneller sein weil es direkte prozessor  befehle benutzt oder nicht?)

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 02. January 2013, 17:37 »
aber wenn ihr sagt dass man mit C auch sehr gut bs schreiben kann, vertraue ich euch mal.
Linux ist in C geschrieben. Grundsätzlich ist die Programmiersprache egal, aber manche Sprachen (Assembler) zwingen dich zu sehr viel mehr Aufwand für vergleichbare Ergebnisse.

Sind wirklich bin dateien 101 code?
Nö. BIN ist nur "binary". Was das genau ist, hängt davon ab, was das genau ist...

Und ist es egal welche sprache ich benutze, werden alle gleich schnell vom Prozessor ausgeführt?
Der Prozessor führt gleichen Code immer gleich schnell aus (darum hat er eine Taktfrequenz). Verschiedene Sprachen erzeugen aber für vergleichbare Ergebnisse verschiedenen Code.

Wird z.B. ein OS auf C basis schneller ausgeführt als auf TASM basis? (Tasm müsste doch schneller sein weil es direkte prozessor  befehle benutzt oder nicht?)
TASM ist nur ein Programm, die Programmiersprache dazu heißt Assembler. Lies dich mal ein, was der Unterschied zwischen Assembler und Hochsprachen (wie C) ist. Assembler kann schneller sein als das Ergebnis eines C-Compilers, aber so gut kannst du nicht Assembler programmieren. :-)

Gruß,
Svenska

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 02. January 2013, 18:30 »
-Ok der Aufwand ist mir nicht so wichtig :D dass ergebnis zählt. (Zumindest bei mir)

-Soweit ich es aus meinem Lernbuch für Assembler aufgenommen habe, ist der Unterschied
zwischen Assembler und Hochsprachen, dass Assembler direkt (fast alle Befehle) vom Prozessor
ausgeführt werden können. In Hochsprachen müsse erst der Code durch den Compiler, der dass
dann erst "Verwendbar" für den PC macht. Ist dies richtig oder bekomme ich da was in den falschen Hals?

- Wenn ich z.B. in Assembler nicht if verwende, da dies kein echter Prozessorbefehl ist und nicht so schnell ausgeführt wird,
 sondern mühsames zusammenfügen vom cmp vergleichen mache, was von beiden wäre schneller? Theoretisch wäre die cmp
methode besser, da die if ja erst compiliert werden muss. Oder macht die Compilierung nicht so viel aus?

-
Zitat
Assembler kann schneller sein als das Ergebnis eines C-Compilers, aber so gut kannst du nicht Assembler programmieren.
Was wäre denn die Perfekte Assembler Programmierung? Ich weis auch nicht ob man darauf überhaupt antworten kann :D

- Und eine Frage vor allem: Würden Hochsprachen denn nicht mehr Ressurcen als Assembler verbrauchen?

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 02. January 2013, 19:48 »
Hallo,

Ok der Aufwand ist mir nicht so wichtig :D dass ergebnis zählt. (Zumindest bei mir)
Du wirst in Assembler (und x86) mit ziemlicher Sicherheit schlechtere Ergebnisse erzielen als in C. Das fängt schon an, wenn du mal eine Division (oder auch Multiplikation) brauchst, die die CPU nicht in Hardware unterstützt. Der Compiler fügt dann automatisch hochoptimierten Code ein...

Soweit ich es aus meinem Lernbuch für Assembler aufgenommen habe, ist der Unterschied zwischen Assembler und Hochsprachen, dass Assembler direkt (fast alle Befehle) vom Prozessor ausgeführt werden können.
Jaein. Fast jeder Assemblerbefehl lässt sich 1:1 in einen Maschinenbefehl für den Prozessor übersetzen. Die Übersetzung von Quelltext in Machinencode erledigt der Assembler.

In Hochsprachen müsse erst der Code durch den Compiler, der dass dann erst "Verwendbar" für den PC macht. Ist dies richtig oder bekomme ich da was in den falschen Hals?
Das ist richtig. Die Übersetzung von Quelltext in Maschinencode erledigt hier der Compiler.

Wenn ich z.B. in Assembler nicht if verwende, da dies kein echter Prozessorbefehl ist und nicht so schnell ausgeführt wird, sondern mühsames zusammenfügen vom cmp vergleichen mache, was von beiden wäre schneller?
Wenn du einem C-Compiler ein komplizierteres if gibst, wird er daraus wahrscheinlich besseren Code erzeugen als deine handgestrickte Variante mit CMP und JMP, wenn du nicht gerade viel Erfahrung in Assembler hast. Dafür versteht man ein paar Zeilen if/else im Quelltext besser und vor allem schneller als eine Seite mit CMPs/JMPs quer durch das Programm.

Theoretisch wäre die cmp methode besser, da die if ja erst compiliert werden muss. Oder macht die Compilierung nicht so viel aus?
C wird nicht zur Laufzeit kompiliert, d.h. der Compiler läuft nur einmal, wenn du das Programm erzeugst. Das funktioniert genauso wie mit Assembler, denn auch den rufst du genau einmal auf, um das Programm zu erzeugen.

Was du meinst, sind interpretierte Sprachen (die meisten Scriptsprachen, u.a. auch Batch), wo zur Laufzeit (also bei jedem Aufruf) der Quelltext gelesen, analysiert und ausgeführt wird. Das ist natürlich deutlich langsamer. Irgendwo in der Mitte liegen dann JIT-Compiler.

Zitat
Assembler kann schneller sein als das Ergebnis eines C-Compilers, aber so gut kannst du nicht Assembler programmieren.
Was wäre denn die Perfekte Assembler Programmierung? Ich weis auch nicht ob man darauf überhaupt antworten kann :D
Kann man auch nicht. Aber die Leute, die Compiler schreiben, kennen die CPU besser als der durchschnittliche Programmierer, der bei Hochsprachen dadurch profitiert. Ausnahmen, wo man auch heute noch Assembler benutzt, sind extrem hardwarespezifische Sachen (Interrupthandler, Startup-Code) und zeitkritische Berechnungen bei begrenzter Hardware (Video-Codecs, digitale Signalverarbeitung). Aber auch letzteres können Compiler inzwischen besser.

Und eine Frage vor allem: Würden Hochsprachen denn nicht mehr Ressurcen als Assembler verbrauchen?
Kommt auf die Hochsprache und die Verwendung an. Ein ungeeigneter Algorithmus macht mehr kaputt als du durch Assembler gewinnen könntest; dafür macht dir Assembler die Verwendung ungeeigneter Algorithmen einfacher.

Gruß,
Svenska

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 02. January 2013, 20:23 »
Ok jetzt mal ganz von der Arbeit und Mühe abgesehen:

Wenn ich ein OS schreibe, wäre es schneller, ressurcen sparender mit C oder Assembler?
Und was wäre mit der GUI, in Assembler habe ich noch nie eine "richtige" GUI geschrieben.

Zitat
Auf der anderen Seite benutzen die meisten Compiler für höhere Programmiersprachen nur einen kleinen Teil des Befehlssatzes der CPU (ein Sachverhalt, der zur Entwicklung von RISC-Prozessoren geführt hat), während dem Assemblerprogrammierer der vollständige Befehlssatz zur Verfügung steht, sodass er in manchen Situationen effizientere Befehle benutzen kann, die dem reinen Hochsprachenprogrammierer nicht zugänglich sind.
Dies ist ein Zitat aus der wiki, und weis jetzt nicht was ich davon halten soll. Ich bin verwirrt, da ich bisher fast 1,5 Jahre nur Assembler genutzt habe :S Kann mir dass fast nicht vorstellen mit einem kleinerem befehlssatz.

Dumme idee von mir die mir gerade eingefallen ist und eigentlich total idiotisch:
Und es wäre theoretisch möglich, das OS aus der Wiki zu nehmen, und es so zu schreiben dass es .ASM ausführen kann, und dann den Kernel eine .ASM ausführen lassen dass dann das OS ist...???
« Letzte Änderung: 02. January 2013, 20:38 von Manello »

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 02. January 2013, 21:14 »
Hallo Manello,


Wenn ich ein OS schreibe, wäre es schneller, ressurcen sparender mit C oder Assembler?
Mit sehr hoher Wahrscheinlichkeit die C-Variante, unter der Voraussetzung das Du in beiden Wegen die selben Algorithmen umsetzt (da die Wahl des richtigen Algorithmus oft deutlich mehr ausmacht als die Wahl der richtigen Programmiersprache, gute Compiler können nicht nur die Leute hinter einer Sprache schreiben und mache Compiler haben für mehrere Sprachen ein gutes Front-End so das oft ein sehr ähnliches Ergebnis bei raus kommt). Die Frage ist eher ob ein durchschnittlicher Assembler-Programmierer ein besseres Ergebnis hinbekommt als ein moderner Compiler (der von echten Profis auf diesem Gebiet entwickelt wird, diese Leute arbeiten manchmal sogar mit dem CPU-Hersteller zusammen oder bekommen zumindest besseren Support als irgendwer anders) und das dürfte eindeutig zu Gunsten des modernen Compilers ausgehen.

Und was wäre mit der GUI, in Assembler habe ich noch nie eine "richtige" GUI geschrieben.
Selbe Antwort wie zuvor.

Dies ist ein Zitat aus der wiki, und weis jetzt nicht was ich davon halten soll.
Klar gibt es einzelne Situationen in denen ein Compiler mal nicht unbedingt den optimalen Code abliefert aber ich denke die sind bei modernen Compilern schon ziemlich selten (solange man die gut ausgetrampelten Standard-Pfade der jeweiligen Programmiersprache nicht zu sehr verlässt) und deswegen würde ich mich lieber mit dem Ergebnis eines 99%-tigem Compilers zufrieden geben (und gegebenenfalls an der einen oder anderen Stelle meinen Hochsprachen-Quell-Code ein bisschen anders formulieren damit der Compiler das besser rafft) als selber anzufangen den x-fachen (x dürfte wohl größer als 10 sein, je nach CPU) Quell-Code-Umfang in Assembler zu bauen. Eine Frage die Du Dir selber stellen solltest ist die ob Du noch vor Deinem Tod fertig werden willst.

Hatten wir diese Diskussion hier nicht schon mal vor etwas über einem Jahr?


Grüße
Erik


Und es wäre theoretisch möglich, das OS aus der Wiki zu nehmen, und es so zu schreiben dass es .ASM ausführen kann, und dann den Kernel eine .ASM ausführen lassen dass dann das OS ist...???
Also für ASM würde ich eindeutig einen JIT-Compiler einem Interpreter vorziehen. ;) Du solltest noch mal ganz gründlich über die Funktionsweise von Assembler und Compiler nachdenken.
SCNR
Reality is that which, when you stop believing in it, doesn't go away.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 02. January 2013, 22:14 »
Hallo,

Dies ist ein Zitat aus der wiki, und weis jetzt nicht was ich davon halten soll. Ich bin verwirrt, da ich bisher fast 1,5 Jahre nur Assembler genutzt habe :S Kann mir dass fast nicht vorstellen mit einem kleinerem befehlssatz.
Wie viele verschiedene Assemblerbefehle hast du benutzt? Laut Wikipedia haben aktuelle 32-Bit-x86-CPUs etwa 480 Befehle (nur x86+MMX+SSE*), da kommen dann noch diverse Befehle für Erweiterungen wie Hardwarevirtualisierung, RSA-Kryptographie, Zufallszahlengenerator usw. dazu. Wenn du bisher mit TASM gearbeitet hast, wirst du diese Befehle noch nie verwendet haben (die kennt TASM nichtmal), vermutlich hast du auch die Protected Mode-Befehle nicht betrachtet.

Dumme idee von mir die mir gerade eingefallen ist und eigentlich total idiotisch:
Stimmt. Antwort: Ja, es ist möglich. Aber nicht sinnvoll.

Gruß,
Svenska

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 03. January 2013, 13:44 »
Also neben den standart befehlen kahmen in dem Buch womit ich gelernt habe Zufallszahlengenerator, Hardwarevirtualisierung, I/O Port ansteuerung,
 embedded Hardware Code, Prozessor-Strukturen-Kontrolle und Protect-Mode Befehle. Anderes wo ich nicht weis ob man dass dazu zählen darf wäre: Binär-Rechen/Binär Befehle ausdrücken, Hexerdezimale Befehle ausdrücken.
Und jetzt wollte ich dies zum OS schreiben benutzen, und deshalb all die Fragen ob dies Sinnvoll ist ;)

Noch ne Sache:
Ich habe doch mal hier im Thema irgendwo gelesen dass ein C compiler den C code in Assembler verwandelt, wenn ich es richtig verstanden habe.
C -> Assembler -> 101 ist es so richtig?
wenn ja könnte man dann dazwischen den Assembler teil abzapfen? sozusagen dass man C in Asm umwandeln kann. Dass würde doch theoretisch gehen, und wäre praktisch :D Oder gibt es sowas schon als richtiges Programm?
« Letzte Änderung: 03. January 2013, 14:08 von Manello »

 

Einloggen