Я предлагаю создать новый LLVM instrinsic. Вы должны будете предоставить определение конкретной цели для вашего внутреннего, чтобы компилятор знал, какой машинный код будет сгенерирован. В вашем случае вы должны указать конкретное определение, которое реализует push + jump.
После того, как у вас есть внутренние вы можете создать проход LLVM, который ищет в LLVM IR для всех call
инструкций, которые не являются к вашему внутреннему и заменяет их с инструкциями вызова, которые являются к вашему внутреннему.
Документация по добавлению новой внутренней функции: http://llvm.org/docs/ExtendingLLVM.html
Учебник о том, как реализовать свой собственный LLVM передать: http://llvm.org/docs/WritingAnLLVMPass.html
Почему вы хотите, чтобы нажать на следующую команду в стеке? Это не то, что имеет смысл в мире LLVM. – Puppy
На самом деле, я хочу сделать некоторую защиту на сайте функции call/return. Извините, он должен нажать «следующий адрес инструкции» в стеке. – xiaogw