- Код: Выделить всё
...
Mother^.ExceptionState.ThreadId:= GetCurrentThreadId();
Mother^.ExceptionState.ThreadTitle:= 'main thread';
{$ifdef windows}
//Mother^.ExceptionState.StackSegment:= <current ss>;
// This is only needed for the Windows-only SEH hack.
{$ifdef cpu64}
asm
mov rsi, qword[Mother]
mov ax, ss
mov word[rsi + TMother.ExceptionState.StackSegment], ax
end ['rsi', 'rax'];
{$else}
asm
mov esi, dword[Mother]
mov ax, ss
mov word[esi + TMother.ExceptionState.StackSegment], ax
end ['esi', 'eax'];
{$endif}
{$endif}
Добавлено спустя 3 минуты 30 секунд:
З.Ы. Если закомментировать - движок взлетает, НО не работает ловля исключений т.к. там параноидальная проверка вменяемости на родной сегмент стека.
Добавлено спустя 1 минуту 21 секунду:
З.З.Ы. Оптимизацию сбрасывал до -O1, компилятор пробовал 3.0.0 вместо 2.6.4 - что совой об пень, что пнём об сову
Добавлено спустя 3 минуты 19 секунд:
З.З.З.Ы. ppcrossx64 воняет, что chentrah.lpr(111,3) Note: Object file "cge.o" contains 32-bit absolute relocation to symbol ".bss.n_u_cge_mother". - какого...
Добавлено спустя 7 минут 10 секунд:
З.З.З.З.Ы Обошёл хаком:
- Код: Выделить всё
var myss: word;
...
{$ifdef cpu64}
asm
mov ax, ss
mov word[myss], ax
end ['rax'];
Mother^.ExceptionState.StackSegment:= myss;
{$else}
но всё равно интересует: КАКОГО?!