«Угон» потоков

Бывает так, что требуется выполнить свой код в контексте произвольного потока. Либо в своем потоке, но в то время когда поток выполняет чужой код. Например, сборщик мусора может хотеть перехватить управление, даже если поток крутит бесконечный цикл. Один из методов перехвата – использование функций GetThreadContext и SetThreadContext. Эти функции позволяют манипулировать контекстом потока – т.е. состоянием регистров процессора, в том числе и указателем на текущую выполняемую инструкцию. В простейшем случае перехватчик приостанавливает поток, сохраняет текущий контекст, модифицирует EIP, чтобы тот показывал на нужный код, и снова запускает поток. При обратном переключении просто восстанавливается ранее сохраненный контекст и все. Метод простой, эффективный и … неработающий. :-)

Read On →

Первая инструкция

Маленькое открытие. После RESET# x86 процессоры начинают выполнение команд в реальном режиме (AKA real mode). CS и IP при этом устанавливаются в 0xf000 и 0xfff0 соответственно. Значит первая инструкция должна находится в пределах первого мегабайта, по адресу 0x000ffff0. Правильно? Не правильно. На самом деле, первая инструкция живет по адресу 0xfffffff0, так как база селектора CS после сброса устанавливается в 0xffff0000. Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1 8. Read On →

«Непобедимый»

Ну что сказать. Сложные и совершенные Itanium’ы проиграли битву маленьким и примитивным x86: Microsoft прекращает поддержку процессоров Intel Itanium в своих продуктах. Microsoft ending support for Itanium

Сегментная адресация в x64

В x64 сегментная адресация работает совсем не так, как в привычном x86. Прикладные программисты, живущие в плоском мире, могли бы этого не заметить, но, к счастью или несчастью, «уши» этих отличий торчат и в user mode.

Read On →

Кризис – всё!

На офисной кухне висит листок, озаглавленный «MS Mortgage» - в смысле жилищные кредиты для работников Microsoft. Все отрывные листочки с номером телефона оторваны. Не иначе как кризис закончился. :-)

О завышенных ожиданиях и суровой реальности, их разбивающей

Рассказываю со слов жены. Происходит нечто странное. Уже трое бывших (или шапочных) знакомых просили привезти им электронику из Штатов. Бывших – это, например, подружка из пионерского детства, встреченная в Артеке, переписка с которой заглохла лет 12 назад, если не больше. Проходит это по одному сценарию – человек объявляется на Одноклассниках, заводит заговор, пятое-десятое, а потом, - «а ты можешь привезти мне ноутбук/фотоаппарат/цветочек аленький?». «У вас там сильно дешевле получается, а я тебе деньги отдам, когда привезешь».

Нет, ну серьезно. Одно дело уважить просьбу давнего друга. В конце концов, зачем вообще нужны друзья, если их не баловать иногда? :-) И то возникают вопросы, как впихнуть шмат высокотехнологичного пластика в чемодан и не забыть любимые трусы в горошек. А тут я и не знаю что ответить. Люди, вы вообще понимаете, о чем вы просите?

Read On →

Я уже вся заждалась, измаялась и даже немного всплакнула

Не так давно попалась в руки одна ошибка. Проявлялась она в том, что некое приложение, общающееся с коллегой через TCP/IP соединение, жаловалось на то, что пересылка пакетов по сети занимает около получаса, и что, вообще, заставлять девушку ждать более 300 миллисекунд – неприлично. Впрочем, судя по тому, что приложение работало как ни в чем не бывало, - замечание про полчаса ожидания было легким преувеличением. Для полноты картины добавлю, что то приложение было в процессе переноса на другую платформу с целью «чиста позапускать» (и посмотреть, как оно там работает).

Read On →

Где-то здесь должна быть лопата

Сегодняшняя картинка на Wuffmorgenthaler порадовала. Подпись к картинке написана на датском (Update: уже переписали по-английски): «у Ноя были проблемы с полноценным ночным сном». Моего уровня датского как раз хватает на чтение таких простых предложений. Однако почему именно датский? И вот что интересно. Все комментаторы, не владеющие датским, как один восторгаются, что картинка не требует перевода. А те, кто владеют (датчане, шведы, норвежцы), как один гадают, почему не по-английски и на всякий случай переводят для остальных. Read On →

Про яблоки

Прелесть какая: Фирмы непродвинутые пытаются создавать девайсы для какой-то заранее определённой цели. Как правило, они пытаются угадать «желания потребителей». Получается это у них по-разному, но, как правило, плохо. Большая часть функций, встроенных в их девайсы, обычно бывает невостребована, пользователи капризничают и плюются, на одну кисленькую удачу приходится десять неудач и так далее. Фирма Аплы не такова. Она сначала создаёт устройство, продаёт его, а потом потребители сами находят ему какое-нибудь употребление. Read On →

Не влезай - убьёт!

Вот такой симпотный монстр живет в здешних распределительных коробках. Не чета черепу с костями.