Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Konstanten(pool) in Assembler (https://www.delphipraxis.net/154555-konstanten-pool-assembler.html)

chaoslion 15. Sep 2010 13:34

Konstanten(pool) in Assembler
 
Hey Leute,

wie werden eigentlich Konstanten in einem Assembler Program gehandhabt?
Ich weiß es gibt Befehle die können Integer Konstanten die net alzu lang sind (10-14Bit)
direkt im Wort speichern. Strings werden wohl auch nur einmal gespeichert im Datensegment und dann bloß bei jedem Aufruf referenziert. Aber wie sieht es in der Regel mit Gleitpunktzahlen aus? Werden die auch im Konstantenpool gespeichert
und ref. oder wie wird das generell gehandhabt?

Gruß

himitsu 15. Sep 2010 13:40

AW: Konstanten(pool) in Assembler
 
Du kannst diese binär via DB/DW/DD/DQ anlegen und dann einfach über deren Startadresse laden.

Du könntest auch in Pascal eine (eventuell typisiterte) Konstante anlegen und diese verwenden.

chaoslion 15. Sep 2010 13:47

AW: Konstanten(pool) in Assembler
 
Okey, sagen wir ich brauch in einem Programm 3 Gleitpkt. Konstanten: 1.0, 3.14 und nochmal 1.0.
Per Hand würd ich natürlich nur 2 erstellen und dann per Addresse laden. Wie würde es ein Compiler machen?
schaut er auch nur nach wieviel er tatsächlich anlegen muss oder würde er in dem Fall die 3 Zahlen erstellen?

Neutral General 15. Sep 2010 14:00

AW: Konstanten(pool) in Assembler
 
Kommt drauf an.

Ich glaube untypisierte Konstanten werden gar nicht in die exe geschrieben, sondern sie werden quasi per "Suchen&Ersetzen" intern im Code ersetzt vor der Compilierung.

Bei typisierten Konstanten werden in deinem Fall irgendwo 1x 1.0 und 1x 3.14 binär gespeichert.
Es sei denn, du definierst 2 verschiedene Konstanten mit dem gleichen Wert.

Edit: Prinzipiell gibt es keinen Unterschied zwischen Fließkomma-/Ganzzahl-/String-Konstanten.

chaoslion 15. Sep 2010 14:09

AW: Konstanten(pool) in Assembler
 
Alles klar, danke euch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz