Есть ли способ установить счетчик программ на ARM без использования C ABI? - PullRequest
0 голосов
/ 23 февраля 2019

Этот код работает для установки счетчика программы на адрес vector_table в архитектуре ARM:

static mut JUMP: Option<extern "C" fn()> = None;
JUMP = Some(core::mem::transmute(vector_table));
(JUMP.unwrap())();

Я вычисляю таблицу векторов, используя let vector_table = *((address + 4) as * const u32);

Есть ли способ выразить то же самое в чистом коде Rust?

Эквивалентный код C:

((void (*)(void))address[1])();

address - это uint32_t *address, поэтому вы смещаетена 4 байта попасть в таблицу векторов.

...