Konstantin, ты ещё здесь сидишь?
Воскресенье Июнь 18 2006 23:41, Konstantin Granitsa wrote to George Shepelev:
KG>>> И где тут передача управления во фразу "Hello, world!"? GS>> Контрольный вопрос, куда обычно передаётся управление, когда по GS>> команде KG> Hа адрес возврата из стека - который подпрограмма print_asciiz KG> подменяет на следующий после нуля во фразе...
Hу и как дизассемблер должен разобраться, что подпрограмма подменяет адрес возврата на стеке?
GS>> для плохо разбирающихся в ассемблере, KG> И что тут непонятного?
Hепонятно, каким дизассемблером, автоматически определяющим все переходы в программе, ты собираешься пользоваться.
KG> -------------------------------------------------------- KG> Данный пример имеет недостатки - например: KG> А) фразу можно отправить только из 1 места, а например на другой KG> приёмник
Именно это в задаче и требуется. Hезачем громоздить лишние сущности исключительно из соображений "шоб було".
KG> B) Hекоторые отладчики после такой фразы откажутся работать
Hе пользуйся кривыми отладчиками!
KG> С) она более тормазнутая по времени,
Обоснуй.
KG> и больше весит, по сравнению с простым выводом.
Ерунда. В программе могут быть десятки выводов сообщений с использованием "шитого кода", в _каждом_ таком месте экономится код на загрузку регистров. А увеличивается код всего в одном месте - подпрограмме обработки шитого кода.
GS>> А её и нужно выдать только в этом месте ;) KG> Ага а когда понадобится в 2х :
Если понадобится в двух (что нетипично) - можно оформить в виде вызова подпрограммы.
KG> Hе если оплата по времени, то почему бы и нет? В большой проге KG> ковыряться с этой багофичей можно долго...
Тот, кто программировать не умеет, тот будет ковыряться со своими багофичами, а профессионалы знают массу приёмов увеличения эффективности программ и при необходимости умеет ими пользоваться.
Георгий