Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.11.2014, 19:48

ASM zu C++

Hallo,

ich habe mir den RTCW Source Code geladen und bin auf einen Code ausschnitt in ASM aufmerksam geworden. Da ich aber keine Ahnung von ASM habe wollte ich einmal nachfragen ob man den Code irgendwie nach C++ "konvertieren" kann oder man ihn mit ein bisschen arbeit anders in C++ darstellen kann.

Code bei Pastebin: http://pastebin.com/5v7ewEhT

MfG

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Zanix« (08.11.2014, 20:07)


xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

2

08.11.2014, 19:57

Wenn man den Code so einfach in C++ schreiben koennte, dann muesste man ja nicht explizit ASM in den C++ einbetten ;)

Kannst du den code ordentlich formatieren, dann kann man dir hier sicher helfen zu verstehen was da passiert.

3

08.11.2014, 20:04

Kann es sein das der Code ausschnitt zu lang ist und es ihn deshalb die ganze Zeit so anzeigt ?

Edit: habe den Code bei Pastebin hochgeladen, weil er dort die richtige Formattierung hat.

4

08.11.2014, 20:22

ASM-zu-C++-Konverter gibt es sehr wenige und kosten auch meistens ne Stange Geld. Den Code, den du zeigst, wirst du auch nicht von Hand nach C++ bekommen können, da viele Konstrukte vorkommen, die es in C++ eigentlich gar nicht gibt (außer vielleicht die Funktion Sys_SnapVector). Der Code macht eigentlich nichts außer mit ein paar kleinen Tricks herauszufinden, ob er auf einem Pentium läuft.

5

08.11.2014, 20:30

Also darf ich daraus schließen, dass man sowas heutzutage gar nicht mehr benötigt oder ?

6

08.11.2014, 20:45

Assembler setzte man im Highlevelbereich eigentlich nicht mehr ein.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

08.11.2014, 21:03

Kann es sein das der Code ausschnitt zu lang ist und es ihn deshalb die ganze Zeit so anzeigt ?

Das liegt am Editor-Modus. Verwende zum Verfassen deiner Beiträge besser den Quellcode-Modus (im Beitragseditor oben umschalten), dann sollte es mit der Formatierung klappen...

Also darf ich daraus schließen, dass man sowas heutzutage gar nicht mehr benötigt oder ?

Abgesehen davon, dass inline Assembler unter MSVC nur für 32-Bit Programme unterstützt wird, verwendet der von dir gepostete Code die x87 FPU, die man auf aktuellen CPUs eigentlich besser nicht mehr verwendet und erscheint mir zumindest auf den ersten Blick insgesamt alles andere als effizient (effektiv passiert da nix anderes als ein floor()!?). Was genau versprichst du dir denn von dem Code? Statt inline Assembler generell besser Compiler Intrinsics verwenden...

8

08.11.2014, 21:05

Ich hoffe nicht, dass er diesen Code verwenden will. Der Schnipsel ist aus Return to Castle Wolfenstein.
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

9

08.11.2014, 22:50

Ich hoffe nicht, dass er diesen Code verwenden will. Der Schnipsel ist aus Return to Castle Wolfenstein.
Genau das hatte ich auch gesagt. Und nein ich will den Code nicht verwenden.

Ne ich wollte nur wissen ob man den erst in C++" übersetzten kann, oder ob man solche sachen gar nicht mehr benutzt. Weil ich würde ja eher die CPU-Taktfrequenz durch die WIN-Api auslesen und wenn die dann zu schwach ist kann er das Spiel dann nicht starten.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

10

08.11.2014, 23:16

Mir scheint das hier mal wieder ein grundlegend falsches Verständnis von Performance auf "moderneren" Prozessoren vorliegt.
Eine derartige Methode wäre so umgesetzt sehr ineffizient. Und so sollte man die Dinge heute tatsächlich nicht mehr verwenden. Intrinsics wären ganz besonders mit dem MSVC definitiv eine wesentlich bessere Idee. Außerdem wäre bei zeitgemäßeren Vorgehensweisen zur Optimierung höhere Geschwindigkeitsvorteile zu erwarten.

Deine Idee die CPU-Taktfrequenz auszulesen ist ebenfalls eine sehr schlechte Idee. Die Leistung kann unabhängig von der Taktfrequenz sehr stark variieren. Das reicht von unterschiedlicher Anzahl an Takten die die gleichen Befehle auf verschiedenen Prozessoren brauchen, über unterschiedlich parallele Ausführung in der Prozessorpipline zu Unterschieden in verschiedenen Caches, Anzahl Cores oder schlicht Hintergrundprozessen die die Leistung beeinflussen. Kurz, von der Taktfrequenz kannst du so gut wie gar nicht auf die Rechenleistung schließen und unterscheidet sich heutzutage auch nicht mehr stark. Zusätzlich dazu, sollte aus Sicht der Benutzerfreundlichkeit die Entscheidung, ob das Programm für den Benutzer "schnell genug" läuft, ihm nicht diktiert werden. Nichts wäre so ärgerlich, wie wenn das Programm wegen so etwas den Dienst verweigert, obwohl es schnell genug gelaufen wäre.

Werbeanzeige