Come funziona questo compito in C ++?

2

Ho un'esperienza molto limitata con C ++, ma ho molta esperienza con Java e NodeJS.

Ho decompilato e provato a dare un senso a un piccolo file compilato C ++ e ho trovato qualcosa che non capisco. A me sembra che un valore sia assegnato a un'espressione che mi sembra strana.

Che cosa sta realmente accadendo e ha senso? (Considerando che qualche magia è stata eseguita dallo strumento di decompilazione per mostrare "C ++" code )

*reinterpret_cast<signed char*>(reinterpret_cast<int64_t>(rax5) + rsi7 * 4 + reinterpret_cast<int32_t>(ecx8)) = *reinterpret_cast<signed char*>(&esi10);

formattato

*reinterpret_cast<signed char*>(
    reinterpret_cast<int64_t>(rax5)
    + rsi7
    * 4
    + reinterpret_cast<int32_t>(ecx8)
) = *reinterpret_cast<signed char*>(&esi10);
    
posta E. Sundin 28.04.2016 - 15:02
fonte

1 risposta

8

Il valore non è assegnato all'espressione complicata. L'espressione viene valutata su un puntatore e il valore viene assegnato alla posizione di tale puntatore (tramite l'operatore di dereferenza * ). L'intera cosa è abbastanza legittima, sembra davvero strana a causa dei cast complicati.

    
risposta data 28.04.2016 - 15:04
fonte

Leggi altre domande sui tag