Совет для изучения блока Linux x86-64 и [закрытой] документации

Разработчики Java явно отвергли идею друга, поскольку это работает в C++. Вы помещаете своих "друзей" в тот же пакет. Частная, защищенная, и упакованная безопасность осуществляется как часть дизайна языка.

James Gosling хотел, чтобы Java был C++ без ошибок. Я полагаю, что он чувствовал, что друг был ошибкой, потому что она нарушает принципы ООП. Пакеты обеспечивают разумный способ организовать компоненты, не будучи слишком пуристскими об ООП.

НОМЕР указал, что Вы могли обмануть отражение использования, но даже который только работает, если Вы не используете SecurityManager. При включении стандартной защиты Java Вы не будете в состоянии обмануть с отражением, если Вы не запишете политику безопасности для специфического разрешения его.

19
задан grabber 16 October 2009 в 01:25
поделиться

3 ответа

Посмотрите здесь , это лучшее место для разработки сборки Linux, вы найдете ресурсы, документы и ссылки.

2
ответ дан 30 November 2019 в 04:20
поделиться

Канонической ссылкой на x86 , вероятно, является Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32 . У меня до сих пор есть пара томов этой серии, еще с тех времен, когда P III был новым. Также есть Руководство программиста архитектуры AMD64 , которое может быть интересно, потому что Intel не полностью последовала примеру AMD в разработке архитектуры x86-64, но я его не читал.

X86 Opcode and Instruction Reference ] в точности соответствует рекламе: коды операций и инструкции x86 (-64) и ничего больше. Удобно, если вы хотите быстро найти какую-то конкретную инструкцию.

1
ответ дан 30 November 2019 в 04:20
поделиться

Общий совет:

Это не просто «ассемблер x86». Каждый ассемблер немного отличается, и они обычно не совместимы друг с другом. Я рекомендую ассемблер NASM, потому что он широко используется, прост в установке и поддерживает 64-битную сборку.

Прочтите хорошую книгу по ассемблеру x86, чтобы познакомиться с основами (регистры, условные переходы, арифметика и т. Д.). Я прочитал Art of Assembly Рэндалла Хайда, когда только начинал.

http://asm.sourceforge.net похоже, там есть несколько хороших руководств, с которыми вы, возможно, захотите поработать. Но если вы выполняете сборку в 64-битном режиме, помните, что соглашение о вызовах для функций C и системных вызовов отличается.

Вам потребуются справочные руководства по ЦП. Лично я предпочитаю AMD. Вам нужны тома 1 и 3 руководства по ЦП. Другие тома также могут быть интересны.

64-битный специальный совет

64-битная сборка x86 почти такая же, как 32-битная сборка x86, так как 64-битная x86 в основном обратно совместима с 32-битной. Вы получаете доступ к 64-битным регистрам и некоторым другим функциям, некоторые непонятные инструкции больше недействительны, а остальные такие же, как и 32-битные.

Однако соглашение о системных вызовах полностью другое в 64-битном Linux . В зависимости от вашего ядра 32-битные системные вызовы могут быть доступны или недоступны. Что еще хуже, 64-битное соглашение о вызовах плохо документировано. Я понял это только изучив глубину исходного кода glibc.

Чтобы избавить вас от хлопот по обнаружению этого на собственном горьком пути, номера системных вызовов находятся в исходном коде Linux в разделе arch / x86 / include / asm / unistd_64.h . Номер системного вызова передается в регистр rax . Параметры находятся в rdi , rsi , rdx , r10 , r8 , r9 ]. Вызов вызывается с помощью инструкции системного вызова . Системный вызов перезаписывает регистр rcx . Возврат находится в rax . (Краткий пример можно найти здесь .)

24
ответ дан 30 November 2019 в 04:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: