Есть ли способ доступа/изменения регистров процессора с Java, как в Assembly? (eax, rip, ax и т.д.) Я не знаю, было бы это полезно, но я думаю, что это было бы очень интересно.
И есть ли способ получить "точку сохранения" переменных, как в c/c++:
&variable
Заранее спасибо, надеюсь, вы поняли, что я имею в виду.
Короткий ответ: Нет
Java компилируется в байтовом коде с перекрестной таблицей. Сборка имеет специфическую форму.
Что касается "точки сохранения", они называются указателями в c/c++, а на Java вы манипулируете ссылками.
Дополнительные сведения о указателях и ссылках см. В статье Указатели в Java
Поскольку Java работает внутри виртуальной машины, невозможно получить доступ к низкоуровневому оборудованию, такому как регистры вашего процессора. Тем более, что их представление и присутствие могут меняться от одной системы к другой. Кроме того, доступ к регистрам также может быть нарушением безопасности.
Вы также не можете определить адрес памяти объекта только с помощью java. Также потому, что программа находится в указанной виртуальной машине. Вы можете получить позицию внутри памяти JVM Heap.
Вы не должны этого делать. Java - это язык высокого уровня и может обрабатывать вашу задачу без необходимости использования регистра cpu. На самом деле JVM может использовать регистр cpu, если он понадобится для оптимизации.
Вы можете защитить использование кэша CPU волатильным.
В любом случае вы можете попытаться написать собственный собственный метод, не уверенный, что он будет успешным.