Сколько HALT и.END должно появиться в ассемблерной программе? (Предполагая, что наша программа не должна выполняться вечно)
Сколько HALT и.END должно появиться в ассемблерной программе? (Предполагая, что наша программа не должна выполняться вечно)
Это по крайней мере один HALT и один.END?
2 ответа
Технически это правда, но .END
сигнализирует конец исходного файла. Это строго конструкция времени компиляции, не влияющая на то, работает ваш код вечно или нет. Вы должны убедиться, что поток программы в конечном итоге достигает HALT
инструкция, для которой вам, очевидно, нужно хотя бы одно из этого. Однако это само по себе не гарантирует, что все пути выполнения действительно окажутся там, поэтому это не является достаточным условием.
У вас должен быть ровно один.END, чтобы ассемблер знал, что исходный файл завершен, независимо от того, должен он работать вечно или нет.
У вас может быть столько HALT, сколько вам нужно (включая ноль, в случае "запустить навсегда"), однако применяется то же предупреждение, что и с несколькими операторами возврата в языках более высокого уровня: несколько точек выхода могут затенить поток кода. Для удобства чтения я бы порекомендовал как можно меньше операторов HALT.