Предположим, есть способ получить адрес метки (это не расширение конкретного компилятора).Тогда проблема на самом деле заключается в идее «следующей инструкции»: может быть очень трудно понять, какая следующая инструкция.Это зависит от процессора и от процессоров, таких как x86, чтобы знать длину инструкции, которую нужно декодировать, конечно, не полностью, но это в любом случае сложная работа ... на известных архитектурах RISC длина инструкций намного прощеи получить следующую инструкцию может быть так же просто, как увеличить адрес на 4. Но общего способа сделать это во время выполнения не существует, хотя во время компиляции это может быть проще, но, чтобы разрешить это C-связным способом, C должениметь тип «инструкция», так что «инструкция *» может быть указателем на инструкцию, и приращение такого указателя будет правильно указывать на следующую инструкцию, при условии, что код известен во время компиляции (таким образом, такой указатель можетНа самом деле указатель может указывать на все, на что может указывать указатель).Во время компиляции компилятор может реализовать эту функцию, легко добавив еще одну «метку», которая находится за пределами сгенерированной инструкции, указанной «первой» «меткой».Но это было бы обманом ...
Более того, давайте предположим, что вы получили адрес метки C, или функции C, или чего-то еще.Если вы пропустите первую инструкцию, скорее всего, вы не сможете «использовать» этот адрес для выполнения кода (за исключением первой инструкции), поскольку без этой единственной инструкции код может стать ошибочным ... если вы точно не знаете, чтоможет пропустить эту единственную инструкцию и получить то, что вы хотите, но вы не можете быть уверены ... если вы не посмотрите на код (который может отличаться от компилятора к компилятору), а затем весь смысл делать такие вещииз C исчезает.
Итак, вкратце, ответ - нет, вы не можете вычислить указатель на следующую инструкцию;и если вы так или иначе сделаете это, то тот факт, что вы указываете на код, теряет смысл, поскольку вы не можете перейти по этому адресу и быть уверенным в окончательном поведении.