- 1
- 2
xor eax, eax
mov al, 0
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+225
xor eax, eax
mov al, 0
Lure Of Chaos 28.04.2011 20:24 # +9
DemonId7 28.04.2011 21:40 # 0
TheCalligrapher 29.04.2011 04:59 # +8
SIGSEGV 29.04.2011 10:00 # −2
guest 29.04.2011 07:44 # +2
TarasB 29.04.2011 10:51 # +1
mov al,0 нужен, чтобы переместить ноль в al, то есть чтобы освободить память, где раньше находился этот ноль.
То есть этот ГК обнуляет регистр и освобождает один байт памяти.
Есть варианты, как это сделать за меньшее число команд?
guest 29.04.2011 11:23 # −1
pushkoff 29.04.2011 11:51 # +7
guest 29.04.2011 11:52 # −2
Где раньше находился 0
А где он собственно находился??? Вы что курите?
И собственно да, это скорее для выранивания сделано каким-нить компилятором.
guest 29.04.2011 13:24 # +2
bugmenot 29.04.2011 12:49 # +1
Lure Of Chaos 29.04.2011 12:52 # +1
guest 29.04.2011 16:15 # +1
Lure Of Chaos 29.04.2011 16:17 # 0
guest 29.04.2011 16:23 # 0
Lure Of Chaos 29.04.2011 16:24 # 0
guest 29.04.2011 16:26 # 0
Lure Of Chaos 29.04.2011 16:27 # 0
guest 29.04.2011 16:27 # 0
Lure Of Chaos 29.04.2011 16:30 # 0
guest 29.04.2011 16:38 # 0
guest 29.04.2011 16:30 # −1
Govnocoder#0xFF 29.04.2011 13:39 # 0
Lure Of Chaos 29.04.2011 13:41 # 0
guest 29.04.2011 13:42 # −4
guest 29.04.2011 13:50 # 0
guest 29.04.2011 14:01 # +2
Lure Of Chaos 29.04.2011 15:30 # 0
guest 29.04.2011 16:01 # 0
bugmenot 29.04.2011 16:11 # 0
guest 29.04.2011 16:12 # 0
Ваш кжп.
guest 29.04.2011 22:41 # +3
guest 29.04.2011 22:46 # +2
ps: посмотри сериал "повторная загрузка (reboot)" там и вирусы-рак и нули и прочая компьютерная хуйня
ззы: сюжет начинается со второго сезона.
bugmenot 29.04.2011 23:16 # +2
а что, идея, заменить интернет-быдло компактным и экономичным микрокодом
guest 15.05.2011 23:28 # +1
Какой, на х*й, ноль? А там, где был ноль, станет пусто! Вообще ничего там не будет! Ахахах хДДД 3,14здец как-то.
Mov пишет куда-то что-то, а не безвозвратно перемещает откуда-то. А учитывая, что уже лет сто как принято, что пустая ячейка - это ячейка с "0" внутри, то здесь идет просто обнуление регистра al.
Программист, ёп твою мать.
Arris 07.07.2011 21:09 # 0
от чего освободить? О.о
TarasB 08.07.2011 09:17 # −1
Arris 08.07.2011 15:45 # 0
Объясните пожалуйста, что же будет там находится после того, как мы освободим его от информации?
TarasB 08.07.2011 17:35 # −3
Arris 10.07.2011 15:27 # +1
Похоже, нет. Не говоря уже о том, что MOV - это не перемещение, а копирование :)
TarasB 10.07.2011 17:01 # −2
Arris 10.07.2011 20:05 # 0
Abort? Retry? Ignore?
TarasB 10.07.2011 20:30 # −2
Всё, уходи. Поговорим после, когда получишь необходимые знания.
Arris 10.07.2011 23:11 # 0
TarasB 10.07.2011 23:36 # 0
А про освобождение памяти я тебе уже всё сказал, просто до тебя не дошло. Жаль.
Arris 10.07.2011 23:47 # −1
*плюясь, удаляется*
TarasB 11.07.2011 09:25 # 0
Arris 11.07.2011 11:20 # −2
bugmenot 10.07.2011 21:33 # −1
Arris 10.07.2011 23:14 # 0
bugmenot 11.07.2011 00:06 # 0
Arris 11.07.2011 11:19 # 0
Arris 10.07.2011 15:35 # 0
Нет, вы серьезно уверены? А на Кнуте поклясться можете?
Arris 08.07.2011 15:48 # 0
TarasB 08.07.2011 17:36 # 0
Вот из-за таких, как ты, программы глючат и текут.
bugmenot 08.07.2011 19:42 # 0
откуда им про память знать...
Arris 10.07.2011 15:31 # 0
Вы ведь все равно не поверите, что я знаю что такое регистры, стек, очередь команд итд, а не только что их прочитал в педивикии.
А хотя стоп, есть способ.
Среда: чистый x86 DOS (хотя это не важно). Сколько байт занимает самая короткая программа? И почему?
bugmenot 10.07.2011 16:59 # 0
как я это получил?
Arris 10.07.2011 20:04 # −2
bugmenot 10.07.2011 21:28 # 0
наличные, чек или перевод?
го обратно в педивикию, о результатах доложите
Arris 10.07.2011 23:13 # −1
Сказать вам нечего, а троллить окружающих хочется.
Продолжим, когда Вы хотя бы попытаетесь ответить на мой вопрос. Пока что вижу дитё, упоённо троллящее всех вокруг.
bugmenot 11.07.2011 00:04 # 0
Число я привёл, а поскольку "экзаменовать" меня не всякому унтерменшу позволено - обоснование за вами.
Arris 11.07.2011 11:08 # 0
Зная это, в 99% случаев отвечают: "2 байта" - "int 20h"
Но и этот ответ неверен.
Не пытайтесь пожалуйста переложить ответственность за свои ошибки на меня.
TarasB 11.07.2011 11:38 # 0
Arris 11.07.2011 11:47 # 0
TarasB 11.07.2011 11:49 # 0
Arris 11.07.2011 12:23 # 0
intelfx 24.07.2011 00:56 # 0
SP при старте указывает на 0FFFFh.
По адресу CS:0FFFFh лежат нули.
По адресу CS:0000h лежит int 20h.
TarasB 11.07.2011 09:30 # 0
Arris 11.07.2011 11:19 # −1
:-D :-D :-D
TarasB 11.07.2011 11:38 # +3
Arris 11.07.2011 11:45 # 0
Arris 11.07.2011 11:51 # −1
guest 11.07.2011 12:11 # +1
Для DOS минимальный размер программы смещение 100h для PSP + sizeof(команда ассемблера RETF). В стеке всегда, но только для COM-программ, лежит адрес возврата в систему.
Arris 11.07.2011 15:06 # +1
bugmenot 11.07.2011 16:31 # 0
Arris 10.07.2011 15:28 # 0
guest 07.07.2011 22:20 # 0
guest 01.05.2011 13:22 # +3
Да, копирование нуля абсолютно бесполезно, и может быть тупняком компилятора, но если в дальнейшем коде в al помещаются другие величины, а используется весь eax, то смысл есть. Ну и само собой, выравнивание, о котором судить из данных двух строк невозможно.
Поэтому - контекст где???
guest 01.05.2011 13:48 # +1
Ничего себе я отстал...
guest 01.05.2011 16:32 # +2
Кстати, не знакорасширения, а 0-расширения, я написал неаккуратно.
Речь идет о внутренней оптимизации архитектуры, которая при обнулении регистра командой sub или xor заставляет процессор считать операции, меняющие младшие 8 битов регитра, меняющими весь регистр. В противном же случае это не так, и микрооперация, читающая из 32-битного регистра, будет ждать прохождения микрооперации записи в младший байт почти через весь конвейер. Вот такое вот объяснение "на пальцах".
без этой оптимизации xor eax,eax + mov al,[ebx] + add edx,eax была бы по прежнему эквивалентна movzx eax, BYTE PTR [ebx] + add edx, eax , но тормозила бы значительно больше. Если обнулить регистр eax более экзотическим способом, появятся лишние вполне заметные тормоза на подверженных этой проблеме процессорах.
Операции inc/dec (писал в комментариях к другому посту) вызывает(вызывала?) сходную проблему из за того, что не меняет CF, но меняет остальные арифметические флаги.
SmackMyBitchUp 02.05.2011 08:08 # +2
guest 02.05.2011 10:07 # +1
bugmenot 02.05.2011 16:30 # 0
guest 02.05.2011 16:42 # +1
TarasB 02.05.2011 13:53 # 0
guest 02.05.2011 13:59 # +5
>ассемблер под х86 - это уже хитрожопый ЯП с нюансами
не знаю, как у тебя в дельфи, а вот в нормальных языках высокого уровня делают так, что-бы без нюансов.
делают так, что-бы не задумываться об архитектуре и прочих мелочах, а просто записывать алгоритм.
"с нюансами" - это обычно как раз признак ассемблера или недоЯП
TarasB 02.05.2011 14:27 # 0
Функциональная илита пришла? Здравствуйте, садитесь.
guest 02.05.2011 14:51 # −2
или эта
>Здравствуйте, садитесь
а ты постоишь
guest 01.05.2011 13:49 # 0
Можно поподробнее? Что это такое?
>partial register stall
Почему это возникает? И что это?
guest 01.05.2011 16:05 # +7
Arris 07.07.2011 21:16 # 0
Спасибо!