看板 LinuxDev 關於我們 聯絡資訊
可以試試看這樣做 不過不太準確就是了 ^^" unsigned int EIP; __asm("call t0\n\t" "t0:\n\t" "popl %0"::"g"(EIP)); ※ 引述《showbizz (藍色咆哮)》之銘言: : 我在linux 2.6版上,希望寫一個C語言應用程式 : 可以在執行到某段code時,我要把esp(stack pointer) : 及ebp(base pointer or frame pointer)及eip(instruction pointer)的值 : 先存入程式變數中。 : 目前我利用的方式是在C程式中,加入assembly code : 如下, : unsigned int ESP,EBP; : __asm__ __volatile__ ("mov %%esp, %0\n\t" : "mov %%ebp, %1" : : "=r" (ESP), "=r" (EBP) : : "0" (ESP), "1" (EBP) : : "0"); : 但是現在系統好像不行直接允取讀到eip暫存器的值, : 我該如何做才能取得eip值呢 !? : Thx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.97.25
showbizz:抱歉..我不太了解你寫的..可有更明確的說明呢!? 05/27 20:22
shane123:因為 call 這個指令會把 eip push 到 stack 05/27 21:16
shane123:就可以藉此知道 eip 了 .... 05/27 21:17