Рубрика «ассемблер» - 11

Недавно Лукас Эдер заинтересовался в своём блоге, способен ли JIT-компилятор Java оптимизировать такой код, чтобы убрать ненужный обход списка из одного элемента:

// ... а тут мы "знаем", что список содержит только одно значение
for (Object object : Collections.singletonList("abc")) {
    doSomethingWith(object);
}

Вот мой ответ: JIT может даже больше. Мы будем говорить про HotSpot JVM 64 bit восьмой версии. Давайте рассмотрим вот такой простой метод, который считает суммарную длину строк из переданного списка:

static int testIterator(List<String> list) {
    int sum = 0;
    for (String s : list) {
        sum += s.length();
    }
    return sum;
}

Читать полностью »

Исходный код «Аполлона-11» опубликован на Github - 1

20 июля 2009 года в честь 40-летия высадки на Луну распечатки с исходным кодом программы для бортового управляющего компьютера КА «Аполлон» (Apollo Guidance Computer, AGC) были оцифрованы и выложены в интернете. Прошло семь лет — и сейчас этот уникальный образец компьютерной истории получил вторую жизнь. Сегодня исходный код для AGC на ассемблере опубликован на Github в полном виде, открыт для поиска, комментариев, форков и т.д.

В коде можно найти вызовы ставших знаменитыми ошибок с кодами 1201 и 1202, которые так беспокоили Нила Армстронга, и многое другое.
Читать полностью »

Google, Microsoft и Mozilla на этой неделе синхронно выпустили экспериментальные билды браузеров с поддержкой WebAssembly (wasm) — эффективного низкоуровневого языка программирования, выполняющегося в браузере с производительностью гораздо выше, чем у самых современных и скоростных компиляторов JavaScript.

Разработчик из Mozilla Люк Вагнер рассказал на Mozilla Hacks о преимуществах WebAssembly, а также сообщил о портировании на WebAssembly научно-фантастического шутера Angry Bots. Демка запускается в браузерах с поддержкой WebAssembly — это последние версии Chrome Canary, Firefox Nightly и Microsoft Edge. Скоро к ним присоединится Safari на WebKit.
Читать полностью »

«Почему всем можно, а мне нельзя?» или реверсим API и получаем данные с eToken - 1

Привет!

Однажды, у нас на предприятии встала задача о повышении уровня безопасности при передаче ОЧЕНЬ ВАЖНЫХ ФАЙЛОВ. В общем, слово за слово, и пришли мы к выводу, что передавать надо с помощью scp, а закрытый ключ сертификата для авторизации хранить на брелке типа eToken, благо их у нас накопилось определенное количество.

Идея показалась неплохой, но как это реализовать? Тут я вспомнил, как однажды в бухгалтерии не работал банк-клиент, ругаясь на отсутствие библиотеки с говорящим именем etsdk.dll, меня охватило любопытство и я полез ее ковырять.

Вообще, компания-разработчик на своем сайте распространяет SDK, но для этого надо пройти регистрацию как компания-разработчик ПО, а это явно не я. На просторах интернета документацию найти не удалось, но любопытство одержало верх и я решил разобраться во всём сам. Библиотека – вот она, время есть, кто меня остановит?
Читать полностью »

Без реле, но и без Ардуины или Драка в песочнице - 1

Да простят меня читатели, но это реплика на реплику. А началось всё с интересной статьи, где автор познакомил нас со своей разработкой на базе ATMega8. Понятно, камень этот избыточен для той задачи, которая была на нем реализована, на что и обратил внимание оппонент.

Но теперь уже у меня засвербило… гм, в ладонях, и я не мог не попытаться вставить свои пять копеек. Я понимаю, настоящая моя заметка для комментария великовата, а на полноценную статью не тянет, но все же попробую.

Пересказывать содержание предыдущих серий смысла нет, кому интересно — я привел ссылки. Перейдем сразу к сути.
Читать полностью »

Доброго дня!

Как сообщает официальный сайт, вчера состоялся релиз первой стабильной версии операционной системы MenuetOS 64 — генетического родственника(можно даже сказать родителя) операционной системы KolibriOS, так же полностью написанную на ассемблере. Читать полностью »

Здравствуйте, уважаемые читатели Хабра.
После долгого перерыва с вами опять я и мы продолжаем копаться во внутренностях UEFI. На этот раз я решил показать несколько техник, которые позволяют упростить реверс и отладку исполняемых компонентов UEFI на примере устаревшего-но-все-еще-популярного PEI-модуля SecureUpdating, который призван защищать прошивку некоторых ноутбуков HP от модификации.

Предыстория такова: однажды вечером мне написал знакомый ремонтник ноутбуков из Беларуси и попросил посмотреть, почему ноутбук с замененным VideoBIOS'ом не хочет стартовать, хотя такой же точно рядом успешно стартует. Ответ оказался на поверхности — не стартующий после модификации ноутбук имел более новую версию UEFI, в которую добрые люди из HP интегрировали защиту от модификации DXE-тома (а там и находится нужный нам VideoBIOS вместе с 80% кода UEFI), чтобы злобные вирусы и не менее злобные пользователи ничего там не сломали ненароком. Тогда проблема решилась переносом PEI-модуля SecureUpdating из старой версии UEFI в новую, но через две недели тот же человек обратился вновь, на этот раз на похожем ноутбуке старая версия модуля работать отказалась, и моя помощь понадобилась вновь.
Если вас заинтересовали мои дальнейшие приключения в мире UEFI PEI-модулей с дизассемблером и пропатченными переходами — добро пожаловать под кат.
Читать полностью »

Все, наверное, знают, что в песочнице Minecraft можно делать абсолютно всё. Различные цифровые схемы и процессоры создают в Minecaft уже с давних пор. Но тот процессор, о котором я пишу, на самом деле уникален! Его название — DjCPU8.

Полноценный процессор в Minecraft: как он работает, как на нем программировать и для чего он? - 1

Почему он уникален? По многим причинам. Давайте по порядку:

1) Скорость работы. Это пока самый быстрый процессор такого уровня в Minecraft. Одна инструкция выполняется примерно 1 секунду.
2) Количество памяти. Оперативной памяти аж 256 байт. Не знаю других ЭВМ с таким объемом памяти.
3) Вычислительные способности. 42 инструкции. Работает с арифметикой, логикой, стеком, вводом/выводом, регистрами и т.д.
4) Ассемблер. В других процессорах нужно вводить программу в двоичном виде. Но в DjCPU8 можно вводить ее текстом.
5) Простота. Ни с какой другой ЭВМ невозможно так просто и приятно работать.
6) Широта применения. Порты ввода/вывода можно создавать в любом месте.
Читать полностью »

Шел мелкий и противный дождь. Настроение было гнусным.
Он лежал на обочине и тихо ржавел. Рядом на столбе сверкал огнями молодой собрат.
Я остановился и положил его в багажник.
Я уже не один.
И он не один.
Читать полностью »

image
(на картинке изображен великий математик и криптограф Алан Тьюринг).

Цель

Теоритическое описание вычислительной машины с плавающими кодами операций, для исполнения зашифрованных(и таким образов офбусцированных) программ в защищенном и открытом виде.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js