Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Assembler ::  byte an Prozedur als Parameter übergeben und dann mit call aufrufen?  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
freecrac
Unregistrierter




Beitrag freecrac Unregistrierter 12:04:15 13.04.2012   Titel:              Zitieren

NNN schrieb:
Der push Befehl funktioniert in einem 32 Bit Programm nur mit 32 Bit Werten = DWORD. Also WORD in DWORD packen usw.
Wenn Du 16 Bit Programme schreibst, ist das anders - da kann man nur WORD (16 Bit) mit einem push Befehl auf den Stack legen.

Und wie möchtest du dann mit einem 32 Bit Programm ein "push segreg" machen?

http://www.fermi.mn.it/linux/quarta/x86/push.htm
Zitat:

IF StackAddrSize = 16
THEN
IF OperandSize = 16 THEN
SP := SP - 2;
(SS:SP) := (SOURCE); (* word assignment *)
ELSE
SP := SP - 4;
(SS:SP) := (SOURCE); (* dword assignment *)
FI;
ELSE (* StackAddrSize = 32 *)
IF OperandSize = 16
THEN
ESP := ESP - 2;
(SS:ESP) := (SOURCE); (* word assignment *)
ELSE
ESP := ESP - 4;
(SS:ESP) := (SOURCE); (* dword assignment *)
FI;
FI;

Description:
PUSH decrements the stack pointer by 2 if the operand-size attribute of the instruction is 16 bits; otherwise, it decrements the stack pointer by 4. PUSH then places the operand on the new top of stack, which is pointed to by the stack pointer.

Hinweis:
Der Unterschied zwischen dem 32Bit-Mode und dem 16 Bit-Mode auf einem Intel 80686+ liegt einzig und alleine in der Bedeutung/Verwendung der Operandsize/Registersize/Adressize-Prefixe.
So ist es auch im 16 Bit-Mode möglich 32 Bit-Register/32 Bit-Adressen(bis zu 4 GiB)/32 Bit-Operationen zu verwenden und im 32 Bit-Mode ist es möglich 16 Bit-Register/16 Bit-Adressen/16 Bit-Operationen zu verwenden.

Dirk
c++.de :: Assembler ::  byte an Prozedur als Parameter übergeben und dann mit call aufrufen?  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.