Ветвь
jb
(и ja
) основана на результате флагов unsigned , в отличие от условия ветки Signed для jg
, jge
,jl
и jle
.
При сравнении без знака MSB включается как часть самого числа, а не как указание его знака.Например:
; Intel ; ; AT&T
mov eax, 08000000h ; mov $0x8000000, %eax
mov ecx, 00000001h ; mov $0x0000001, %ecx
cmp eax, ecx ; cmp %ecx, %eax
jl mybranch ; branch taken ; jl mybranch ; branch taken
Принимая во внимание:
mov eax, 08000000h ; mov $0x8000000, %eax
mov ecx, 00000001h ; mov $0x0000001, %ecx
cmp eax, ecx ; cmp %ecx, %eax
jb mybranch ; branch not taken ; jb mybranch ; branch not taken
js
будет разветвляться только на основе состояния флага знака в регистре (R|E)FLAGS