Avaleht
uus teema   vasta Tarkvara »  Linux & UNIX »  get_esp ei tööta märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
Overkilla
HV veteran

liitunud: 11.04.2004




sõnum 11.02.2008 19:35:07 get_esp ei tööta vasta tsitaadiga

Selline lugu, et
long get_esp() { __asm__("movl %esp,%eax"); }
peale teatab gcc (3.4.6), et % märgid ei sobi ja "parameter error". Kui kirjutada nii
long get_esp() { __asm__("movl % esp,% eax"); }
või nii
long get_esp() { __asm__("movl%%esp,%%eax"); }
, siis jääb ainult viimane veateade, et "parameter error". Ei oska midagi muuta, parandada.
Kui get_esp välja võtta, siis gcc on rahul, aga ilma selleta ei tööta programm ise.
Platvorm on SunOS 5.8 SPARC.
Kommentaarid: 97 loe/lisa Kasutajad arvavad:  :: 6 :: 2 :: 80
tagasi üles
vaata kasutaja infot saada privaatsõnum
Smith
HV veteran
Smith

liitunud: 25.08.2002



Autoriseeritud ID-kaardiga

sõnum 11.02.2008 19:51:08 vasta tsitaadiga

See näeb kahtlaselt x86 asmi moodi välja, mis vist ei sobi eriti SPARCi puhul.
_________________
Only the Central Computer knows the truth
Kommentaarid: 158 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 145
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Overkilla
HV veteran

liitunud: 11.04.2004




sõnum 11.02.2008 20:39:59 vasta tsitaadiga

Smith kirjutas:
See näeb kahtlaselt x86 asmi moodi välja, mis vist ei sobi eriti SPARCi puhul.
Täitsa hea mõte, siis
u_long get_esp() { asm("mov %sp, %i0"); }
oleks vast parem?
Kommentaarid: 97 loe/lisa Kasutajad arvavad:  :: 6 :: 2 :: 80
tagasi üles
vaata kasutaja infot saada privaatsõnum
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 12.02.2008 10:23:51 vasta tsitaadiga

Kas sa tahad stack pointerit välja lugeda? GCC assembler on tark. Sa saad registri väärtuse otse muutujasse kopeerida. Ma kord tegin täpselt sedasama m68k arhitektuuril.

unsigned int bufStackPointer;
__asm__ __volatile__ ("move.l %/sp,%0" : "=r"(bufStackPointer));


Muutuja pikkus, move käsk ja %sp võivad Sparci puhul teistsugused olla, aga põhimõttest saad ehk aru.

_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Linux & UNIX »  get_esp ei tööta
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.