2016-11-08 1 views

Antwort

4

Code-Modell ist ein Begriff von AMD64 ABI (siehe 3.5.1 von https://software.intel.com/sites/default/files/article/402129/mpx-linux64-abi.pdf für weitere Informationen).

Kurz gesagt - die meisten Offsets in x64-64-Anweisungen sind PC-relativ, jedoch ist das unmittelbare Feld innerhalb der Anweisungen nur 32 Bit lang. Wenn daher die Daten "weit" von dem Code entfernt sind (mehr als 32 Bit auseinander), dann könnte man das unmittelbare Feld innerhalb der Anweisungen nicht verwenden, um den Offset effizient zu codieren, und sollte die Adresse explizit berechnen. Das Codemodell bietet verschiedene Einschränkungen für den relativen Speicherort von Code und Daten.

Wenn Sie alles statisch kompilieren, ist "klein" sicher (und Standard). Wenn Sie JIT'en, dann ist alles möglich, besonders wenn ASLR aktiviert ist und Sie ein mittleres/großes Codemodell verwenden müssen.

Verwandte Themen