Benim ASM detayları hakkında biraz bulanık, ama sana genel bir fikir verebilir düşünüyorum.
ESP: Yığın işaretçisi, EBP: Temel işaretçi.
movl $1f, (%0)
0x1f değerini 0 (yukarı) parametresine taşıyın.
movl %%esp, 4(%0)
Kayıt ESP içeriğini (+ 4'ten) içine taşıyın.
movl %%ebp, 8(%0)
Kayıt EBP içeriğini (+ 8'den) içine taşıyın.
movl 8(%1), %%ebp
(+ 8) arasındaki içeriği, kayıt EBP'ye taşıyın.
movl 4(%1), %%esp
(+4) içeriğini ESP'ye kaydedin.
jmp *(%1)
(to) içinde bulunan adrese atlayın.
"1:" bir atlama etiketidir.
"+ S" bir "source" (read) parametresi, "+ D" bir hedef (write) parametresini bildirir. İfadenin sonunda bulunan yazmaç listesi "klobber" listesidir, muhtemelen ASM kodu tarafından değiştirilmiş olan yazmaçların listesidir, bu yüzden derleyici tutarlılığı korumak için gerekli adımları atabilir (örneğin, aynı değeri içeren ECX'e güvenmemek gibi) eskisi gibi).
Sanırım coco_ctx "coco içeriği" anlamına gelir. Yani: İşlev, geçerli yığın çerçevesini "from" yapısına kaydeder ve yığın çerçevesini "to" yapısına kaydedilene ayarlar. Temel olarak, mevcut işlevden başka bir işleve atlar.
içindir hakkında biraz daha fazla bilgi edinebilmesi ekleyeceğiz. Ancak, sadece bir işlevden diğerine atlamak değil, bir bütün çağrı yığından diğerine atlamak; Tamamen yürütme bağlamlarını değiştiriyor. (Ayrıca, gosh ama GCC satır içi derleme sözdizimi tuhaftır.) – Crashworks
Bir C işlev çağrısı benzeri sözdizimi (http://wiki.osdev.org/Opcode_syntax) sarılmış bir AT & T sözdizimi (http://wiki.osdev.org/Inline_Assembly). İnanmayacaksın ama ben aslında "standart" Intel sözdizimini tercih ederim. ;-) – DevSolar
İçerik anahtarı C++ için de çalışıyor mu yoksa bu arama için farklı mı yazmalıyım? – jameszhao00