Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Как часть некоторой ранней разработки прототипа, которую я сделал на персональном проекте, я записал довольно мало кода, чтобы сделать что-то вроде этого. Это не берет строки - x86, коды операций являются методами на классе X86Writer. Не зарегистрировал вообще и нигде не имеет близкого полного обзора, но если бы он представлял бы интерес, я желал бы к открытому исходному коду он в соответствии с Новой лицензией BSD.
ОБНОВЛЕНИЕ: хорошо, я создал тот проект - Управляемый. X86
Космос также имеет некоторую интересную поддержку генерации x86-кода:
Не непосредственно от C# Вы не можете. Однако Вы могли потенциально записать свой собственный класс обертки, который использует внешний ассемблер для компиляции кода. Так, Вы потенциально выписали бы блок в файл, использовать Платформу.NET для вращения нового процесса, который выполняет ассемблерную программу, и затем используйте Систему. IO для открытия сгенерированного файла ассемблером для вытаскивания потока байтов.
Однако, даже если бы Вы делаете все это, я был бы высоко удивлен, не сталкиваетесь ли Вы тогда с проблемами безопасности. Введение исполняемого кода в совершенно другой процесс становится все меньше и меньше возможным с каждой новой ОС. С Vista я полагаю, что Вам определенно отказать. И даже в XP, я думаю, что Вы получили бы исключение доступа запрещен при попытке записать в память другого процесса.
, Конечно, который поднимает вопрос того, почему необходимо сделать это. Конечно, там получен, чтобы быть лучшим путем:).
Смотрите на это: CodeProject: Используя неуправляемый код и блок в C#.
Я думаю, что Вы были бы лучшими от записи собственного Win32 dll. Можно тогда записать функцию в ассемблере, который экспортируется из dll. Можно тогда использовать C# для динамичного соединения с dll.
Это - не совсем то же как передающий в строке и возвращающий массив байтов. Чтобы сделать это, Вам был бы нужен x86 ассемблерный компонент или обертка вокруг masm.exe.
я не знаю, является ли это то, как это работает, но Вы могли просто shellexecute внешний компилятор, тогда загружающий объект, сгенерированный в Вашем массиве байтов.