Godt...skulle blot sikre mig vi ikke var ude i seriøse misforståelser ;-)
Din funktion giver ikke SP der, hvor du kalder GetStackAdr - men SP inden i GetStackAdr - den vil (hvis jeg ellers husker korrekt være 6 under).
Du burde kunne nøjes med at kigge på SP, da dit SS altid vil være det samme. Jeg *TROR* dine underlige resultater skyldes din udregning fordi fortegnet går galt.
Men efter som du kun har et stacksegment, så prøv at droppe funktionen og istedet bruge en in-line lidt som denne
procedure WhatEver... var MySP : integer; begin .. .. asm mov MySP,SP end .. end
Tilgiv fejl & mangler, men det er godt nok et stykke tid siden jeg har rodet med delphi 1
kan dit problem ikke skyldes at du bruger for meget stack? Igen, efter min lousy'e hukommelse har du vist kun 16K som standard. Men du kan ændre det med $M directivet
Det er da klart, en funktion ligger kun et sted, når du kalder den laver den et jmp til funktionens område. Detfor får du hele tiden det samme resultat. det er korrekt at du bliver nød til at bruge in-line for at få det til at virke.
--> loke-liscom Selvom det er en function der aflæser stackpointeren vil jeg ikke få samme resultat hver gang.
--> doc404 Det er korrekt at jeg får et forskudt resultat og det er forskudt med 8 byte (near call) ellers 10 byte ved "far call".
Forskydningen er ligegyldig i mit tilfælde - det eneste jeg skal vide er om jeg aflæser den korrekt. ?
Jeg har forsøgt med forskellige testprogrammer og får desværre nogle underlige resultater ind i mellem. Det kan være at problemet ligger andet sted i programmet - måske er stacken allerede overskredet som doc404 siger. Mit værste eksempel er at jeg kalder en procedure i en komponent med 1160 byte som parametre - men forbruget på stacken viser 3780. ?
--> doc404 hvis du smider et svar er pointene dine.
Jeg er på 4 år igang med et regnskabsprogram i Delphi 1 på efterhånden 133.000 linier. Jeg har lige udvidet programmet med en ny funktion, der anvender en komponent som anvendes 5 andre steder i programmet. Pludselig får jeg en stack-fejl 202. (Som delphi 1 er dårlig til at håndtere.) Derfor gik jeg i gang med at måle lidt på stackforbruget. Jeg kan ikke udvide stacken da det jo tager af datasegmentet som også er belastet - så koden skal vel bare efterses for "sløseri". :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.