Арифметическая операция в сборке - PullRequest
2 голосов
/ 10 июня 2011

Я изучаю ассемблер.Я считаю, что арифметика в сборке может быть подписана или без знака.Правила различны для обоих типов арифметики, и я считаю, что программисту сложно решить, какие правила применять.Поэтому программист должен заранее знать, включает ли арифметика отрицательные числа или нет.если да, следует использовать правила арифметики со знаком, иначе подойдет более простая и легкая арифметика без знака.Основная проблема, которую я нахожу с арифметикой без знака, это «что если результат больше, чем его область хранения?».Это может быть легко решено с помощью области хранения данных, которая больше требуемой.Но это потребует дополнительных байтов, и размер сегмента данных увеличится.Если размер кода не имеет значения, разве мы не можем свободно использовать эту технику?

Ответы [ 2 ]

8 голосов
/ 10 июня 2011

Если вы программист, то вы контролируете представление данных в рамках требований целевой области вашего программного обеспечения.Это означает, что вам нужно хорошо знать, прежде чем вы начнете касаться кода, с каким типом данных вы будете иметь дело, как они будут организованы (в случае сложных типов данных) и как они будут кодироваться (с плавающей точкой / целое число без знака / целое число со знаком и т. д.).«Безопаснее всего» использовать операции, соответствующие типу данных, которыми вы манипулируете, и которые, если вы все сделали правильно, вы уже должны знать.

4 голосов
/ 10 июня 2011

Это не так просто.Большинство арифметических операций не зависит от знака: они не подписаны и не подписаны.

Интерпретация результата, определяемая спецификацией программы, - это то, что делает их подписанными или неподписанными, а не сама операция.Правильный вариант сравнения инструкций всегда должен выбираться осторожно.

В некоторых архитектурах ЦП существуют различные инструкции со знаком и без знака, но это все, что нужно.Большинство процессоров имеют разновидности арифметических сдвигов вправо, которые либо сохраняют старший бит, либо заменяют его на ноль: это может использоваться как обработка со знаком и без знака, соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...