From: h2e@bilmuh.ege.edu.tr
Date: Mon 11 Aug 2003 - 11:21:39 EEST
#define u32 unsigned
static inline u32 getreg()
{
u32 ret = 0x0;
__asm__ __volatile__(
".1:\n\t"
"movl .1, %%eax\t\n"
"movl %%eax, %0"
::"m" (ret)
);
return ret;
}
int main()
{
printf("%d", getreg());
}
bunu bi incele.
bu arada su ifade "movl %%"reg", %0" yanlis gibi.cunku ia32 de her komudun
bi kodu var! derleme aninda ise reg degeri belirsiz oldugumdan hata
olusur!
router will route you
On Sun, 10 Aug 2003, Halil Demirezen wrote:
> Timer interrupt i sonrasi registerlerin degerleri stack e atiliyor.
> Bunlarin sirasini ve alinis seklindeki bir bilgi alabilir miyim?
>
> Asil amacim benim eip registerindeki degeri almak. Process scheduling
> asamasinda kullanacagim...
>
>
> #define get_reg(reg) ( \
> { unsigned long sonuc; \
> __asm__ __volatile__ ("movl %%"reg",%0":"=r"(sonuc):); \
> sonuc; })
>
>
>
>
> makrosunun ardindan
>
> unsigned int EIP = get_reg("eip");
>
> Yapamiyorsunuz.
> Eip registerinin degerini baska bir yolla almam gerekiyor.
>
>
> Iyi calismalar.
>
>