Он установит ZF
(нулевой флаг), если регистр равен нулю. Это, вероятно, то, что обычно используется для тестирования. Он также установит другие флаги надлежащим образом, но, вероятно, их будет гораздо меньше.
Кроме того, я должен отметить, что test
на самом деле не выполняет сравнение - он выполняет побитовую операцию and
(отбрасывая результат, кроме флагов).
Для сравнения операндов будет использоваться инструкция cmp
, которая выполняет операцию sub
, отбрасывая результаты, кроме флагов. Вы правы, что
cmp $eax, $eax
не будет иметь большого значения, поскольку флаги будут каждый раз устанавливаться в соответствии с нулевым результатом.