C - Арифметика указателя используется скелет тестера машинного кода - PullRequest
0 голосов
/ 09 сентября 2018

Я нашел похожую форму тестера машинного кода в Интернете, написанную на C.

Тестер использует арифметику указателей для запуска буфера машинного кода.

#include <stdio.h>
#include <string.h>

unsigned char code[] = \
"machine code to be executed";

void main() {
    int (*ret)() = (int(*)())code;
    ret();
}

Может кто-нибудь объяснить логику арифметики указателя двух линии, представленные выше?

1 Ответ

0 голосов
/ 09 сентября 2018

Может ли кто-нибудь объяснить логику арифметики указателей двух строк, представленных выше?

Арифметика указателей отсутствует. Код просто объявляет переменную (ret), тип которой является указателем на функцию, которая не принимает параметров и возвращает int. Он устанавливает для этой переменной значение code, которое предположительно содержит фактические байты машинного кода, а затем использует его для вызова функции.

...