Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Assembler-Routine portieren: x86 auf x64

Frage Entwicklung Assembler

Mitglied: AnkhMorpork

AnkhMorpork (Level 2) - Jetzt verbinden

17.08.2014, aktualisiert 15:23 Uhr, 1399 Aufrufe, 4 Kommentare, 1 Danke

Hallo in die Runde,

ich habe eine Verständnisfrage. Habe folgende Assembler-Routine erstellt:
01.
   ASM 
02.
                   {x:=SQR(x)-SQR(y)+r:} 
03.
                   FLD x            {x laden} 
04.
                   FST xalt         {entspr. x:=xalt} 
05.
                   FMUL ST,ST       {SQR(x) bilden} 
06.
                   FLD y            {y laden} 
07.
                   FMUL ST,ST       {SQR(y) bilden} 
08.
                   FSUBP ST(1),ST   {SQR(x)-SQR(y) bilden, Stack poppen} 
09.
                   FLD r            {r laden} 
10.
                   FADDP ST(1),ST   {SQR(x)-SQR(y)+r bilden, Stack poppen} 
11.
                   FSTP x           {x speichern} 
12.
 
13.
                   //y:=2*xalt*y+i: 
14.
                   FLD Mult          {Mult laden} 
15.
                   FLD y             {y laden} 
16.
                   FLD xalt          {xalt laden} 
17.
                   FMULP ST(2),ST    {Mult*xalt bilden, Stack poppen} 
18.
                   FMULP ST(1),ST    {Mult*xalt*y bilden, Stack poppen} 
19.
                   FLD i             {i laden} 
20.
                   FADDP ST(1),ST    {Mult*y*xalt+i bilden, Stack poppen} 
21.
                   FSTP y            {y speichern} 
22.
 
23.
                   INC v            {entspr. dem Pascal-Befehl INC(v) } 
24.
                   FLD x             {x laden} 
25.
                   FMUL ST,ST        {SQR(x) bilden} 
26.
                   FLD y             {y laden} 
27.
                   FMUL ST,ST        {SQR(y) bilden} 
28.
                   MOV AL,IsBMode    {IsBMode in AL laden} 
29.
                   OR AL,AL          {ODER-Verknüfung mit sich selbst, verändert den Wert nicht, setzt aber Flags!} 
30.
                   {Die beiden letzten Zeilen stellen einen logischen Vergleich folgender Art dar:} 
31.
                   {MOV AL,1 --> entspr. TRUE} 
32.
                   {TEST IsBMode,AL} 
33.
                   {Die ODER-Verknüfung ist jedoch schneller und benötigt weniger Code!} 
34.
                   JNZ  @SetBMode    {bedingter Sprung: "Jump if no zero flag set", d.h. wenn IsBMode=TRUE, d.h.: 1 UND 1 = 1 in TEST} 
35.
                   FADDP ST(1),ST    {SQR(x)+SQR(y) bilden, Stack poppen} 
36.
                   JMP @StoreLimit   {unbedingter Sprung, überspringen der nächsten Zeile} 
37.
                   @SetBMode: 
38.
                   FMULP ST(1),ST  {SQR(x)*SQR(y) bilden, Stack poppen} 
39.
                   @StoreLimit: 
40.
                   FSTP Limit      {ST(0) in Limit speichern, Stack poppen} 
41.
 
42.
                END;
Programmier-Umgebung:
Lazarus-Pascal 1.2.4. mit fpc 2.6.4

Ist Teil einer Iterationsschleife zur Berechnung der Mandelbrot-Menge. Das habe ich auf einem 32-bit Windows 7 laufen und das funkt. klasse.

Ich möchte das Ganze nun auf ein 64-bit Windows 7 System bringen.

Frage: Macht es Sinn, das Modul entspr. anzupassen? Und wenn ja, was müsste ich ändern?
In Sachen Assembler bin ich leider absolute Niete - für das Ding hier habe ich Wochen gebraucht ...

Gruß

ANKH
Mitglied: Lochkartenstanzer
LÖSUNG 17.08.2014, aktualisiert um 15:23 Uhr
Moin,

Warum meinst Du, daß es nötig wäre da etwas anzupassen?

x86-Maschinencode its ein Subset der 64-Bit-prozessoren. Du mußt die x64-erweiterungen nicht nutzen, außer Du benötigst entsprechend große Datenstrukturen oder Adressraum.

hast Du es einfach mal probiert, ob das so auch in Deinem 64-bit-Windows funktioniert? Oder willst Du "doppelt genau" rechnen?

lks
Bitte warten ..
Mitglied: AnkhMorpork
17.08.2014 um 13:37 Uhr
Zitat von Lochkartenstanzer:

Moin,

Warum meinst Du, daß es nötig wäre da etwas anzupassen?

x86-Maschinencode its ein Subset der 64-Bit-prozessoren. Du mußt die x64-erweiterungen nicht nutzen, außer Du
benötigst entsprechend große Datenstrukturen oder Adressraum.

hast Du es einfach mal probiert, ob das so auch in Deinem 64-bit-Windows funktioniert? Oder willst Du "doppelt genau"
rechnen?

lks

Hallo lks,

danke für die Reaktion.

Das ist nur eine Frage zum Verständnis. Ich möchte begreifen, was ich da mache. Eben, ob eine Anpassung notwendig/sinnvoll ist. Dass x86 Subset von x64 ist, war mir klar. Andersherum wärs nicht machbar ...

Das läuft optimal unter 64-bit, keine Frage. Möchte einfach nur was dazulernen.

Gruß

ANKH
Bitte warten ..
Mitglied: Lochkartenstanzer
17.08.2014 um 13:55 Uhr
Zitat von AnkhMorpork:


Das läuft optimal unter 64-bit, keine Frage. Möchte einfach nur was dazulernen.


Dann probier doch einafch die doppelt genauen Berechnungen aus. udn miß mal, wie sich das auf das ergebnis udn die berechnungszeien auswirkt.

lks
Bitte warten ..
Mitglied: AnkhMorpork
17.08.2014, aktualisiert um 15:25 Uhr
Zitat von Lochkartenstanzer:

> Zitat von AnkhMorpork:
>
>
> Das läuft optimal unter 64-bit, keine Frage. Möchte einfach nur was dazulernen.
>

Dann probier doch einafch die doppelt genauen Berechnungen aus. udn miß mal, wie sich das auf das ergebnis udn die
berechnungszeien auswirkt.

lks

Werde ich tun. Das wird vermutlich pari auslaufen ... auf einem Bildschirm-Canvas von vielleicht 200x100 Pixeln. Aber auf einem Drucker-Canvas von 2000x1000 Pixeln oder mehr wird das - naja - etwas länger dauern.

Mir ging es eigendlich nur um den Geschwindigkeitsfaktor: Kann ich das tunen?
Tja - schnell gepostet und zu langsam gedacht, was ich da poste. MEA CULPA!

Danke nochmal!

ANKH

P.S. Tue das hier mal auf "gelöst" - lks hat das wohl hinreichend geklärt.
Bitte warten ..
Ähnliche Inhalte
Netzwerke
Java notwendigkeit von x86 + x64
Frage von ChrisDynamiteNetzwerke4 Kommentare

Guten Tag, wir stellen Standardmäßig übers Netzwerk die X86 und X64 Installationen von Java bereit, obwohl wir nur noch ...

Windows 10
Update von Win 7 x86 auf Windows 10 x64
gelöst Frage von fiffi1Windows 105 Kommentare

Hallo Leute Ist es möglich kostenlos von einem 32-Bit Windows 7 System auf ein 64-Bit Windows 10 System zu ...

Assembler
Assembler-Aufgabe
Frage von How-ToAssembler4 Kommentare

hey leute, ich habe eine aufgabe in assemabler, leider hab ich keine ahnung, wie ich vorzugegehen habe. die genaue ...

Microsoft
Visual C++ Redistributable 2005 2008 x64 x86
gelöst Frage von sabinesMicrosoft2 Kommentare

Hallo, ich habe Visual C Redistributable in allen möglichen Varianten und Versionen auf den PCs und habe das Gefühl, ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 5 StundenBatch & Shell7 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 7 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 22 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 23 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Server-Hardware
Braucht ein Server eine Grafikkarte?
gelöst Frage von lcer00Server-Hardware14 Kommentare

Hallo zusammen, habe gerade 3 Stunden gebraucht, um herauszubekommen, dass die Remotemanagement-Console von Intel (RMM4) nur funktioniert, wenn die ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...