![]() |
|
Модераторы: bsa |
![]()
|
|
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Если реально в пару строчек, то да, напишите.
Да, не. Шучу. да не проверял я ничего, прямо так уж систематически. я просто хотел сказать, что этому придают слишком большую значимость, то есть мифическая угроза, отвлекает от рельных проблем. И этот топик, еще одно тому подтверждение. В коде bsa, нет и намёка на неправильное использование стринга, однако, запуганные этой мифической угрозой программеры, пытаются найти черную кошку в черной комнате, которой там нет. Еще одна такая проблема big-endian/little-endian. Один знакомый программер очень озабочен был этой проблемой вычитанной у страуструпа, или еще у кого-то из патриархов. Причем писал он исключительно под венду. Я ему говорю, что венда не работает на биг-ендиен, и типа расслабсья.. Но он ни в какую не верил. Можно конечно сказать, что это хорошо, и что его код, при необходимости легче будет перенести на биг-едниен, если такая задача возникнет. Но такая задача никогда не возникнет, просто потому-что есть еще 100000001 причина, по которой код не будет работать нигде кроме венды. Так зачем тогда тратить столько сил именно на на этот ендиен, как будто нет других проблем... эх, ладно, щас опять скажут что я подрываю устои платформанезависимого програмирования.... Это сообщение отредактировал(а) volatile - 13.1.2012, 01:42 |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
в AL заносим наш char - 0,1,2,3,4,5,6.7.8.9 - A,B,C,D,F (регистр значения не имеет, коректируем там по ходу) на выходе в AL бинарное значение то есть в примере заносим в AL код буковки D (ascii) = 0x44 или 0x64 в зависимости от регистра на выходе в AL получаем бинарное значение = 0xD -------------------- |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
500mhz, интересно, а во что тогда компилятор превратит:
gcc (gcc -O1 -c -S prog.c -o prog.S) меня удивил:
|
||||
|
|||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
видимо компилятор не знает о битовых операциях и BCD арифметике )))
-------------------- |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
а что не правильно работает разве?
-------------------- |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
еще более интересен вопрос о корректности ААА, без операции вычитания. Там по другому разветвлению, вообще ни одна комманда не влияет на флаг AF сдедовательно результат будет зависеть от кода который расположен выше, и который здесь не приведен. от фазы луны, другими словами. Добавлено через 9 минут и 44 секунды
500mhz, Вот перед этим вашим кодом добавьте што-нибудь влияющее на флаг AF, например: mov al, 7 add al, 9 и сможете сами ответить на сакроментальный вопрос |
||||
|
|||||
| 500mhz |
|
||||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
volatile
код как бэ намекает что в начале должно быть xor eax,eax для соблюдений правил "техники безопасности"
Добавлено через 4 минуты и 12 секунд по поводу "корректности" команд, есть неописуемый случай (уже классика)
тоже не корректное использование cmp ? -------------------- |
||||
|
|||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Не вижу никакой связи с предыдущим кодом, и разбирать его это уже полный оффтоп.
Вернемся к нашим баранам. Для сравнения, код откомпилированный студией:
по-ходу студия еще и без условных переходов сделала. (условнй переход == лишний тормоз) Это примерно, тот-же участок, что и ваш:
э... не вижу, прямо так уж ошеломляющих преимуществ асма, даже на таком простом коде. а уж вероятность ошибиться, как мы и убедились, в разы больше. |
||||
|
|||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
интересно где это я ошибся? пс разве топик называеться АSM VS C ? -------------------- |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
почитайте выше, ваш первый код содержал ошибку. вы ее исправили, (добавив xor). это кстати вовсе не очевидная ошибка, и при отладке и тестировании она наверняка не всплывет. а всплывет где-то потом, у юзера, и то по редким стечениям обстоятельств. (такой тип ошибок, я считаю самыми мерзкими.) так вы же сами предложили. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
круто студия оптимизировала (не знал про операцию set*). В итоге код получился:
Это сообщение отредактировал(а) bsa - 15.1.2012, 17:51 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |