Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz dabadab #63 üzenetére

    Jellemzően nem fognak elfutni a már lefordított 32 bites kódok 64 bites módban. Fel fog robbanni például ha egy byteos inc vagy dec van benne mivel az 64 bites módban rex prefix (0x40-0x4f). A 0x50 opcode 32 biten push eax de 64 biten push rax ami nyilván nem ugyanazt fogja csinálni. 64 biten megkaptuk a rip-relatív címzést ami megint egy létező 32 bites címzési módott csap felül szóval ha olyan van a kódban akkor az se fog működni. Mivel a memóriacímzés 64 bitre váltott ezért ügyelni kell a 32 bites offsetek megfelelő kiterjesztésére (mov eax, -1; mov [foo+eax], 0 gépi kódja nem ugyanazt csinálja 64 biten futtatva). Természetesen a pointerek 64 bites mérete eleve minden olyan adatszerkezetre kihatással lesz amiben pointerek vannak és a verem is máshogy fog kinézni már csak azért is mert a call is 64 bites. Még ha a 32 bites konvenciót próbálod használni az se fog menni mivel rosszak lesznek az offsetek.

    Jester

Új hozzászólás Aktív témák