
Ich bin auf der Suche nach einer möglichst einfachen Methode, zur Compilierzeit den EIP (also den Instruction Pointer, der auf die jeweilig als nächstes auszuführende Anweisung im Speicher zeigt) an einer bestimmten Stelle innerhalb einer Funktion auszulesen.
Den Wert zur Laufzeit auszulesen ist kein Problem, dieser Wert ändert sich zur Laufzeit aber nicht (die jeweilige Anweisung wandert ja nicht durch den Speicher) und kann also vorher schon ausgelesen werden. Die Frage ist nur wie.
Ich dachte schon an eine Lösung zwecks Labels, womit ich mich aber wenig auskenne (die bösen Labels

Hier in dem Fall ist ein Label kein Problem, ich springe so oder so wild durch den Code

Um das mal in Code zu setzen:
Code: Alles auswählen
void tu_etwas()
{
int a = 0;
int b = 12345;
LABEL:
a = a + 1;
a = a / b;
}
//...
asm volatile("mov %0, %%ecx" : : "r"(&LABEL);
asm volatile("jmp *%ecx"); // Danach sollte ich oben bei a = a +1; sein.