Сдается мне, что приведенный пример, показывает, что выпадение 9% слов позволит лишь очень примерно судить, о какой теме вообще был текст, но не позволит понять собственно смысла текста. Выпадение 19% процентов, превращает текст в полностью бессмысленный набор слов.
Составители словарей при этом немало удивляют: Оказывается слово «effectively» является популярным, в вот слово «likely» — нет. (longman)
Вне китая — плохо.
Но на самом деле для определенных нужд — вполне нормально (ну если прошивку не обновлять, конечно :) ). Основная проблема — доступ есть только из локалки. Из любой точки мира посмотреть через облако, как задумано — нельзя.
В остальном терпимо. На карту пишет (но с циклической записью вроде были проблемы). Можно настроить чтобы писал на SMB-шару.
Качество изображения очень так себе. Дай бог 800х600 эффекттивных. Я думаю меньше.
Но за свои деньги — вне конкуренции.
Если дело одобряется при Premium Processing, то грин карта часто приходит сразу за одобрением I-140
Т.е. без AOS и CP? Серьезно? Без медицины, наплевав на priority date, без копии паспорта?
Ну предположим, что по послужному списку сразу видно, что человек не болеет туберкулезом, и в Северной Корее никогда не был. Но остаются еще два момента:
1. На грин-карте присутствуют отпечатки пальцев. Откуда? С рекомендательных писем???
2. Откуда они узнают кому и сколько грин-карт слать? Ведь в I-140 нет информации о членах семьи претендующих на грин-карту.
Немного не так. Две недели (а точнее 15 календарных дней) занимает I-140 с Premium processing, положительное решение по которому позволяет подавать, либо на AOS, либо на Consular Processing (в зависимости от того находитесь вы уже в США или нет)
И вот по результату AOS или CP вы можете получить грин карту.
Вот только, что AOS, что CP занимает несколько месяцев. И premium processing для них не бывает.
А вообще все этои вопросы подробнейшим образом рассмотрены на профильных форумах типа govorimpro.us
Простите, хотел ответить ShiftLEr — у. Юрист наверное и сам это знает…
надо всего-лишь использовать прямой вывод в порт (ибо digitalWrite() слишком медленная для таких вещей), и delayMicroseconds(27).
Вы вроде в курсе про меговские таймеры. Нафига такие игрушки из репертуара школьника?
Последствия этого таковы: 8 метров ленты, это на минутку, почти 10 ампер, питаются от одной жилы UTP пары.
А кто мешал поставить преобразователь 220->12 уже возле самой ленты? (Ну или заменить 220 на что-то более гуманное, типа 36).
Зачем это было сделано, когда пайка к плате надёжнее, непонятно. Напоминаю, паялась витая пара. Которая вообще-то жёсткая и из разъёма может выскочить. Которую не припаяешь ко штырю на тяп-ляп, иначе отвалится, обязательна паяльная кислота.
Из разъема — выскочить. А будучи припаянной — оторвать дорожку.
А уж на какие сюрпризы способна недоотмытая кислота...
А в целом, мне кажется у вас какое-то излишне страстное увлечение ардуинками, большими компутерами и длинными проводами между ними (длинными — это больше двух метров, да). Думается штук 5 платок типа raspberry/odroid с человеческим ethernet-ом между ними могли-бы существенно упростить ту паутину, что вы описываете.
Но вот что странно. У контроллера атрибутов нет регистра 0x20! У него регистр последний 0x14. И даже если такой регистр бы был, почему нет записи значения? Должно же быть две записи в порт. А тут она одна.
3C0h: Attribute Controller: Address register
bit 0-4 Address of data register to write to port 3C0h or read from port 3C1h
5 If set screen output is enabled and the palette can not be modified,
if clear screen output is disabled and the palette can be modified.
Т.е. запись этого бита запрещает редактировать палитру.
Это связано с тем, что некоторые карты не могли выводить картинку пока производится запись в палитру, поэтому ее положено редактировать только во время обратного хода луча.
Я поискал в интернете и нашёл, что почему-то (в книгах я этого не нашёл) можно записать, скажем, в регистр 0x10 значение 0x20 за один раз просто объединив биты: System_Out8(ATTRCON_ADDR,0x10|0x20); Тогда указанная запись пишет 0x20 в регистр 0x00? Но почему это работает? И так ли это?
Скорее всего вы спутали это с двухбайтовым out-ом. типа такого:
mov dx, 3d4h
mov ax, 5501h
out dx,ax
это позволяет записать в регистр 1 значение 55.
01 запишется в 3d4
55 в 3d5
С портом 3C0 такое не пройдет, т.к. индекс и значение пишутся в один порт.
Пример можно. Правда прямую ссылку дать не могу, потому что требуется указать точный адрес для того чтобы получить реальные цены, а не те которые действуют только первый год:
Spectrum Internet 100/10 $64.99
Spectrum Internet 100/10 with Spectrum TV $53.99
Spectrum Internet 100/10 with WiFi $69.99
Spectrum Internet Ultra 300/20 $104.99
Spectrum Internet Ultra 300/20 with Spectrum TV $93.99
Не то чтобы не знают. Антенны эти, и лежат в любом магазине где торгуют техникой, и по тому же телевизору рекламируются постоянно.
Дело в том, что в большинстве случаев они просто не нужны. Связано это с тем, что доступ к интернету предоставляют те же компании, что и доступ к кабельному телевидению. При этом цена на Internet+StraterTV ниже, чем просто Internet. А в StarterTV как раз и входит всё то, что есть в эфире плюс еще несколько каналов. И смотреть можно не только с телевизора, а вообще с любого устройства (планшета, телефона). Да еще и вне дома.
В 2009 году вроде бы было принято решение полностью перейти на цифровой формат вещания (Конгресс даже выделил $2 млрд, чтобы помочь старикам купить конвертеры), но де-факто этого ещё не произошло, и бесплатные каналы ещё остаются в аналоговом радиоэфире.
Тут у вас путаница. Бесплантых каналов в эфире полно, да. Но все они давно цифровые.
В случае магазинов и т.п. это называется «Criminal records» хранятся по идее в полиции. Сайтов для поиска по ним есть много, но сильно не уверен, что они показывают что-то правдоподобное. Вокруг всех этих списков построено куча бизнесов по поиску данных, и попыток обелить историю (criminal record можно снять через суд в некоторых случаях).
Из других наиболее известное — кредитная история (там даже чтоб свои данные посмотреть надо заплатить около 25 баксов)
Еще есть Renter's history (история квартиросъемщика)…
Сколько их всего даже не представляю.
Нет. Это называется «страна черных списков».
Обмануть с оплатой или утащить что-то из магазина — проще простого (во многих магазинах часть товара лежит в ящиках на улице. Нужно взять, войти в магазин, и там оплатить на кассе). И даже ловить будут не очень сильно.
Но вот если поймают… После этого ты не просто человек второго сорта, а даже не знаю как правильно назвать.
Кваритру не снять, кредит не взять, на приличную работу не устроиться. Навсегда.
Как человек работающий в США уже чуть более трех лету могу сказать следующее:
акценты. Да, очень разные. Но как правило они все понимаются легче чем, те у кого американский английский родной. Только требуется чуть-чуть привыкнуть. Первое время будет совсем непонятно, но улучшается даже в процессе первой беседы. Индусский и мексиканский акценты — вообще очень легкие. Для меня самый сложный истинный британский.
про словарный запас и сериалы мне непонятно. Что ты за специалист, если не знаешь терминологии в своей области?
додумывание неизвестных слов — отлично срабатывает. Даже позволяет поплнять свой слованый запас :)
от точности осознания отдельной фразы, я думаю мало что зависит. всегда можно переспросить. По крайней мере в Калифорнии очень лояльное отношение к плохому знанию английского. И фразу произнесут по другому и медленнее, и тебе подскажут с нужным словом если запнулся.
насчет устаревших и нарушающих фраз — опять-таки отношение очень лояльное. Даже если скажешь что-то не так, скорее всего не обратят внимания, в самых ужасных случаях укажут, что это лучше говорить по-другому.
Мой опыт:
Учить именно IT-ный английский по сериалам конечно глупо. Да и вообще его врядли имеет смысл учить специально. Просто потому, что он учится сам в процессе изучения IT-ности.
В результате получается ситация готорая была у меня лет 7 назад:
статьи по программированию читаются легко и без словаря
художественная литература — со скрипом, в одном из трех предложений неизвестные слова
при просмотре сериалов выхватываются лишь отдельные фразы
Когда с таким уровенем у меня замаячила перспектива работы в США, я решил что надо что-то делать… :)
Но делать что-то очень активно, мне, как истинному программисту, лень, а потому я для начала ограничился заменой "книжки перед сном" на англоязычные (тут тоже удобны сериалы. Я использовал Wheel Of Time).
Первый том был мучением, второй шел намного легче, в третьем я мог уже 2-3 страницы прочитать не заглядывая в словарь. При этом тут тоже далеко не все слова обязательно переводить, какие-то эпитеты в описании зеленой лужайки можно пропустить. А если вдруг окажется, что эпитет был важным — всегда легко вернуться.
Когда перспектива уже не маячила, а стала вполне осязаемой, я на месяц съездил в штаты, и обнаружил, что с разговорным английским у меня совсем плохо. Причем то, что относилось к работе я понимал неплохо, но общение с теми-же людьми "за жизнь" не получалось вообще. Проблемы были даже в отеле, магазине, и т.п.
Тут я начал смотреть сериалы. До отъезда успел просмотреть всю имевшуюся на тот момент "теорию большого взрыва", попробовал "Клинику" — оказалось слишком тяжело, продолжил "Футурамой".
Не скажу что продвинулся очень сильно, но продвинулся. На момент переезда я уже мог лично обсудить все необходимые вещи касавшиеся съема жилья, открытия счета и т.п., до тех пор пока не приходилось говорить по телефону. По телефону уровень понимания падал катастрофически.
Уже переехав, я подумал что тут английский "попрет сам" и забросил, и книги, и сериалы.
А он не попер :)
Пришлось вернуть, и то, и другое. Wheel Of Time где-то после 5 тома стал для меня совсем уныл, я попробовал еще кучку всего, но так и не нашел чего-то совсем на мой вкус, сейчас читаю "Discworld" Пратчета.
Итак, по сериалам:
таки да, "Friends" оказался совсем не плох на английском, хотя я и совсем не женского полу. Причем пробовал для сравнения смотреть на русском — отвратительно. Я даже не знаю в чем дело, и к переводу претензий нет, и актеры дубляжа вроде стараются, а вот эффект совершенно другой. Очень простой и понятный язык.
Мультсериал "American Dad" — отличные шутки, простой язык, сезону к 8 становится нудноватым, но иногда исправляется. Намного "цивилизованнее" чем Южный парк — с ним у меня как-то не задалось. "Family Guy" aka "Гриффины" где-то между ними. Иногда можно посмотреть, но уж очень часто шутки скатываются к совсем ниже пояса.
Dreamland — австралийский сериал, соответственно австралийский акцент, очень быстрая речь. На мой взгляд очень веселые шутки (хотя другу моему совсем не понравилось).
Outdoor man — так себе по шуткам обычный "семейный" сериал про папашу трех дочерей. Но простой и не напряжный.
сериалы с Чарли Шином "Two and a half man" и "Anger management" — не смотрел их целенаправленно, но поглядываю когда попадаются по телевизору. Не сказать что легкий английский, но местами очень забавно.
Ну а в заключение хочу сказать, что просто смотреть сериалы оно конечно полезно, и дает довольно сильный эффект по-началу. Но вот уже на моем уровне я вижу что этого явно мало, прогресс если и есть, то мизерный, однако на более активное изучение сил/времени/силы воли пока изыскать не могу.
Впрочем даже этого уровня вполне достаточно для комфортного проживания и работы в Калифорнии. (В Нью-Йорке, к примеру, говорят с этим сильно хуже).
Насчет пяти секунд, тетка явно говорит не совсем правду (хотя совершенно непонятно зачем).
1. Не стали-бы попутные с Uber-ом машины останавливаться аж за 5 секунд до окончания зеленого.
2. Если-б она останавливалась на перекрестке, то никак не успела бы набрать 20mph на момент столкновения.
Из статьи ничего не смог понять, полез смотреть исходник. Там всё предельно просто.
Вот это место.
Тетка ехала сверху, делала левый поворот (т.е. в правую часть картинки). Uber ехал снизу вверх по крайней правой полосе. Дополнительных секций на светофоре нет, поэтому обоим светил один и тот-же сигнал светофора, а именно желтый.
Машины слева от Uber-а уже остановились, и тем самым стали преградой скрывшей друг от друга участников ДТП.
Тетка решила «проскочу!» (ибо поворот на скорости в 32км/ч — не очень нормальное явление).
Uber решил «хрен ты у меня проскочишь!» и ехал свои обычные 60км/ч по прямой.
По закону виновата тетка. «По понятиям» — оба хороши.
Тот свидетель, что вступился за тетку не говорил что она не виновата. Он только сказал что со стороны Uber-а некрасиво было пытаться успеть проскочить под желтый.
То есть код игры не защищен, вообще.
<...> И это просто говорит о неопытности или излишней торопливости разработчиков данной игры. Так как для мультиплеерных игр (особенно с PVP) — защита очень важна, и обычно этому уделяется много внимания.
Вы слышали про такую мультплеерную игру с PVP как World of Warcraft?
Готовы назвать близзардов неопытными или торопливыми?
Дык вот код клиента WoW не защищен. Вообще.
да, согласен, 31. есть еще несколько ошибок в тексте… (условие в C-ном выражении противоположное написал), но когда заметил редактировать уже не давало. Но так можт и лучше — видно что кто-то прочитал. :)
В ассемблерном коде выполняется честная, хотя и магическая проверка
sar eax, 31 # some magic check
and eax, dword ptr [rip + _MAX_INT] # yet another magic
add eax, edx
Эх молодежь…
Вобщем-то простейшая оптимизация.
Как это работает:
команда «sar» это арифметический сдвиг вправо (Shift ArithmeticRight).
При сдвиге регистра вправо нужно придумать что положить в самый старший бит (влево тоже, но сейчас не об этом).
Есть несколько стандартных вариантов (класть 0, размножать старший бит, класть то что было в младшем и т.п.). В данном случае делается размножение старшего бита, напирмер (сократим до 8 бит для наглядности):
10001100 -> sar r,1 -> 11000110
00001100 -> sar r,1 -> 00000110
такой сдвиг сохраняет знак числа и примерно соответствует операции деления целого числа на 2 (поэтому он и называется арифметическим).
Особо интересными случаями являются применение этой операции к единице и минус единице:
1 (00000001) -> sar r,1 -> 0 (00000000)
-1 (11111111) -> sar r,1 -> -1 (11111111)
т.е. если применить эту опреацию много-много раз к положительному числу, мы получим 0, а если к отрицательному то -1 (11111111).
Собственно это здесь и делается: в результате арифметического сдвига вправо на 32 бита в eax будет 0, если исодное значение было положительным, или 0xffffff если отрицательным.
Соответственно вторая строчка — операция and с константой MAX_INT. т.к. в eax у нас возможны только 0 и 0xffffffff, результатом этого and будет либо 0, либо MAX_INT (в зависимости от знака исходного значения).
Ну и последней строчкой добавляем это значение к результату функции.
В терминах C это можно переписать так:
h += h>=0 ? MAX_INT : 0;
Зачем это надо:
Современные процессоры очень не любят команды условных переходов. Такая оптимизация позволяет сделать эквивалентный код без переходов.
Составители словарей при этом немало удивляют: Оказывается слово «effectively» является популярным, в вот слово «likely» — нет. (longman)
Практически в любом более-менее крупном магазине принимают:
https://firstquarterfinance.com/what-stores-accept-personal-checks/
Эксперту Антону можно посоветовать поискать размышления других людей на эту тему. Скажем, Ноама Хомского:
https://habrahabr.ru/post/177701/
Вне китая — плохо.
Но на самом деле для определенных нужд — вполне нормально (ну если прошивку не обновлять, конечно :) ). Основная проблема — доступ есть только из локалки. Из любой точки мира посмотреть через облако, как задумано — нельзя.
В остальном терпимо. На карту пишет (но с циклической записью вроде были проблемы). Можно настроить чтобы писал на SMB-шару.
Качество изображения очень так себе. Дай бог 800х600 эффекттивных. Я думаю меньше.
Но за свои деньги — вне конкуренции.
Т.е. без AOS и CP? Серьезно? Без медицины, наплевав на priority date, без копии паспорта?
Ну предположим, что по послужному списку сразу видно, что человек не болеет туберкулезом, и в Северной Корее никогда не был. Но остаются еще два момента:
1. На грин-карте присутствуют отпечатки пальцев. Откуда? С рекомендательных писем???
2. Откуда они узнают кому и сколько грин-карт слать? Ведь в I-140 нет информации о членах семьи претендующих на грин-карту.
И вот по результату AOS или CP вы можете получить грин карту.
Вот только, что AOS, что CP занимает несколько месяцев. И premium processing для них не бывает.
А вообще все этои вопросы подробнейшим образом рассмотрены на профильных форумах типа govorimpro.us
Простите, хотел ответить ShiftLEr — у. Юрист наверное и сам это знает…
Вы вроде в курсе про меговские таймеры. Нафига такие игрушки из репертуара школьника?
А кто мешал поставить преобразователь 220->12 уже возле самой ленты? (Ну или заменить 220 на что-то более гуманное, типа 36).
Из разъема — выскочить. А будучи припаянной — оторвать дорожку.
А уж на какие сюрпризы способна недоотмытая кислота...
А в целом, мне кажется у вас какое-то излишне страстное увлечение ардуинками, большими компутерами и длинными проводами между ними (длинными — это больше двух метров, да). Думается штук 5 платок типа raspberry/odroid с человеческим ethernet-ом между ними могли-бы существенно упростить ту паутину, что вы описываете.
Отсюда: https://github.com/johnsoft/tower-pc/blob/master/docs/video/vgadoc4b/VGAREGS.TXT
(там кстати есть еще файлы с описанием регистров конкретных видеокарт, и трайдентов в частности)
Т.е. запись этого бита запрещает редактировать палитру.
Это связано с тем, что некоторые карты не могли выводить картинку пока производится запись в палитру, поэтому ее положено редактировать только во время обратного хода луча.
Скорее всего вы спутали это с двухбайтовым out-ом. типа такого:
это позволяет записать в регистр 1 значение 55.
01 запишется в 3d4
55 в 3d5
С портом 3C0 такое не пройдет, т.к. индекс и значение пишутся в один порт.
Пример можно. Правда прямую ссылку дать не могу, потому что требуется указать точный адрес для того чтобы получить реальные цены, а не те которые действуют только первый год:
Spectrum Internet 100/10 $64.99
Spectrum Internet 100/10 with Spectrum TV $53.99
Spectrum Internet 100/10 with WiFi $69.99
Spectrum Internet Ultra 300/20 $104.99
Spectrum Internet Ultra 300/20 with Spectrum TV $93.99
Не то чтобы не знают. Антенны эти, и лежат в любом магазине где торгуют техникой, и по тому же телевизору рекламируются постоянно.
Дело в том, что в большинстве случаев они просто не нужны. Связано это с тем, что доступ к интернету предоставляют те же компании, что и доступ к кабельному телевидению. При этом цена на Internet+StraterTV ниже, чем просто Internet. А в StarterTV как раз и входит всё то, что есть в эфире плюс еще несколько каналов. И смотреть можно не только с телевизора, а вообще с любого устройства (планшета, телефона). Да еще и вне дома.
Тут у вас путаница. Бесплантых каналов в эфире полно, да. Но все они давно цифровые.
Вы правда думаете, что на платных каналах в америке нет рекламы? :)
Из других наиболее известное — кредитная история (там даже чтоб свои данные посмотреть надо заплатить около 25 баксов)
Еще есть Renter's history (история квартиросъемщика)…
Сколько их всего даже не представляю.
Обмануть с оплатой или утащить что-то из магазина — проще простого (во многих магазинах часть товара лежит в ящиках на улице. Нужно взять, войти в магазин, и там оплатить на кассе). И даже ловить будут не очень сильно.
Но вот если поймают… После этого ты не просто человек второго сорта, а даже не знаю как правильно назвать.
Кваритру не снять, кредит не взять, на приличную работу не устроиться. Навсегда.
Как человек работающий в США уже чуть более трех лету могу сказать следующее:
акценты. Да, очень разные. Но как правило они все понимаются легче чем, те у кого американский английский родной. Только требуется чуть-чуть привыкнуть. Первое время будет совсем непонятно, но улучшается даже в процессе первой беседы. Индусский и мексиканский акценты — вообще очень легкие. Для меня самый сложный истинный британский.
Мой опыт:
Учить именно IT-ный английский по сериалам конечно глупо. Да и вообще его врядли имеет смысл учить специально. Просто потому, что он учится сам в процессе изучения IT-ности.
В результате получается ситация готорая была у меня лет 7 назад:
Когда с таким уровенем у меня замаячила перспектива работы в США, я решил что надо что-то делать… :)
Но делать что-то очень активно, мне, как истинному программисту, лень, а потому я для начала ограничился заменой "книжки перед сном" на англоязычные (тут тоже удобны сериалы. Я использовал Wheel Of Time).
Первый том был мучением, второй шел намного легче, в третьем я мог уже 2-3 страницы прочитать не заглядывая в словарь. При этом тут тоже далеко не все слова обязательно переводить, какие-то эпитеты в описании зеленой лужайки можно пропустить. А если вдруг окажется, что эпитет был важным — всегда легко вернуться.
Когда перспектива уже не маячила, а стала вполне осязаемой, я на месяц съездил в штаты, и обнаружил, что с разговорным английским у меня совсем плохо. Причем то, что относилось к работе я понимал неплохо, но общение с теми-же людьми "за жизнь" не получалось вообще. Проблемы были даже в отеле, магазине, и т.п.
Тут я начал смотреть сериалы. До отъезда успел просмотреть всю имевшуюся на тот момент "теорию большого взрыва", попробовал "Клинику" — оказалось слишком тяжело, продолжил "Футурамой".
Не скажу что продвинулся очень сильно, но продвинулся. На момент переезда я уже мог лично обсудить все необходимые вещи касавшиеся съема жилья, открытия счета и т.п., до тех пор пока не приходилось говорить по телефону. По телефону уровень понимания падал катастрофически.
Уже переехав, я подумал что тут английский "попрет сам" и забросил, и книги, и сериалы.
А он не попер :)
Пришлось вернуть, и то, и другое. Wheel Of Time где-то после 5 тома стал для меня совсем уныл, я попробовал еще кучку всего, но так и не нашел чего-то совсем на мой вкус, сейчас читаю "Discworld" Пратчета.
Итак, по сериалам:
таки да, "Friends" оказался совсем не плох на английском, хотя я и совсем не женского полу. Причем пробовал для сравнения смотреть на русском — отвратительно. Я даже не знаю в чем дело, и к переводу претензий нет, и актеры дубляжа вроде стараются, а вот эффект совершенно другой. Очень простой и понятный язык.
Мультсериал "American Dad" — отличные шутки, простой язык, сезону к 8 становится нудноватым, но иногда исправляется. Намного "цивилизованнее" чем Южный парк — с ним у меня как-то не задалось. "Family Guy" aka "Гриффины" где-то между ними. Иногда можно посмотреть, но уж очень часто шутки скатываются к совсем ниже пояса.
Dreamland — австралийский сериал, соответственно австралийский акцент, очень быстрая речь. На мой взгляд очень веселые шутки (хотя другу моему совсем не понравилось).
Outdoor man — так себе по шуткам обычный "семейный" сериал про папашу трех дочерей. Но простой и не напряжный.
Ну а в заключение хочу сказать, что просто смотреть сериалы оно конечно полезно, и дает довольно сильный эффект по-началу. Но вот уже на моем уровне я вижу что этого явно мало, прогресс если и есть, то мизерный, однако на более активное изучение сил/времени/силы воли пока изыскать не могу.
Впрочем даже этого уровня вполне достаточно для комфортного проживания и работы в Калифорнии. (В Нью-Йорке, к примеру, говорят с этим сильно хуже).
1. Не стали-бы попутные с Uber-ом машины останавливаться аж за 5 секунд до окончания зеленого.
2. Если-б она останавливалась на перекрестке, то никак не успела бы набрать 20mph на момент столкновения.
это вообще прямая ошибка перевода. Желтый:
Вот это место.
Тетка ехала сверху, делала левый поворот (т.е. в правую часть картинки). Uber ехал снизу вверх по крайней правой полосе. Дополнительных секций на светофоре нет, поэтому обоим светил один и тот-же сигнал светофора, а именно желтый.
Машины слева от Uber-а уже остановились, и тем самым стали преградой скрывшей друг от друга участников ДТП.
Тетка решила «проскочу!» (ибо поворот на скорости в 32км/ч — не очень нормальное явление).
Uber решил «хрен ты у меня проскочишь!» и ехал свои обычные 60км/ч по прямой.
По закону виновата тетка. «По понятиям» — оба хороши.
Тот свидетель, что вступился за тетку не говорил что она не виновата. Он только сказал что со стороны Uber-а некрасиво было пытаться успеть проскочить под желтый.
Вы слышали про такую мультплеерную игру с PVP как World of Warcraft?
Готовы назвать близзардов неопытными или торопливыми?
Дык вот код клиента WoW не защищен. Вообще.
sar eax, 31 # some magic check
and eax, dword ptr [rip + _MAX_INT] # yet another magic
add eax, edx
Эх молодежь…
Вобщем-то простейшая оптимизация.
Как это работает:
команда «sar» это арифметический сдвиг вправо (Shift ArithmeticRight).
При сдвиге регистра вправо нужно придумать что положить в самый старший бит (влево тоже, но сейчас не об этом).
Есть несколько стандартных вариантов (класть 0, размножать старший бит, класть то что было в младшем и т.п.). В данном случае делается размножение старшего бита, напирмер (сократим до 8 бит для наглядности):
10001100 -> sar r,1 -> 11000110
00001100 -> sar r,1 -> 00000110
такой сдвиг сохраняет знак числа и примерно соответствует операции деления целого числа на 2 (поэтому он и называется арифметическим).
Особо интересными случаями являются применение этой операции к единице и минус единице:
1 (00000001) -> sar r,1 -> 0 (00000000)
-1 (11111111) -> sar r,1 -> -1 (11111111)
т.е. если применить эту опреацию много-много раз к положительному числу, мы получим 0, а если к отрицательному то -1 (11111111).
Собственно это здесь и делается: в результате арифметического сдвига вправо на 32 бита в eax будет 0, если исодное значение было положительным, или 0xffffff если отрицательным.
Соответственно вторая строчка — операция and с константой MAX_INT. т.к. в eax у нас возможны только 0 и 0xffffffff, результатом этого and будет либо 0, либо MAX_INT (в зависимости от знака исходного значения).
Ну и последней строчкой добавляем это значение к результату функции.
В терминах C это можно переписать так:
Зачем это надо:
Современные процессоры очень не любят команды условных переходов. Такая оптимизация позволяет сделать эквивалентный код без переходов.