dll.Load и проверка or

Assembler programming questions
  • popovpa
    or eax, eax - проверка на 0. ZF соответственно будет 1.
  • В смысле на 0? Значение eax 0? Тогда проверку поидее надо делать после вызова 68 функции? (Просто код не мой) Раз куча не выделилась то и загружать ничего не надо? Или вообще желательно и там и там проверку делать? И тогда вопрос а почему or? test ведь быстрей и меньше? А что возвращает dll.Load?
  • dll.Load возвращает 1(неудача) или 0(успех). Вот затем и eax на 0 проверялся.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Нашёл http://wiki.kolibrios.org/wiki/Libraries вопросы отпали...так положено :)

    Почему вместо or нельзя использовать test она ведь быстрей?
  • Можно использовать or, and, test, нет никакой разницы вообще.
  • test сравнивает и меняет только флаги, a or записывает значение в приёмник...значит test быстрее? Вот я и не могу понять почему везде or, у нас ведь система на ассемблере и мы хотим чтобы она была максимально компактной и быстрой...
  • У современных процессоров с конвейерной архитектурой эффективная скорость выполнения всех команд — 1 такт (кроме умножения и деления).
  • popovpa
    У меня подозрение, что не все знают о существовании команды test.
    В любом случае test предпочтительней. Она не требует регистра для сохранения результата, а на современный процессорах пара test и coditional jump объединяются в одну микроинструкцию за счёт macro-fusion.
    Use TEST when comparing a value in a register with zero. TEST essentially ANDs operands together without writing to a destination register. TEST is preferred over AND because AND produces an extra result register. TEST is better than CMP ..., 0 because the instruction size is smaller.
  • Who is online

    Users browsing this forum: No registered users and 2 guests