2015-05-31 4 views
0

Итак, у меня есть.Порядок вычитания в сборе

pushl %ebp 
movl %esp, %ebp 
movswl 12(%ebp), %edx 
movl 8(%ebp), %eax 
subl %edx, %eax 
popl %ebp 
ret 

Если моя функция вызывает 2 переменные: function(int a, short b).

Когда я вычитаю вычитание, это будет (b - a) или (a - b). eax - это значение, которое будет сохранено, если я прав, поэтому я хочу сказать, что это будет (a - b).

+0

ISTM, что это было бы довольно легко, просто попробовать. –

ответ

6

movl 8(%ebp), %eax Приводит ваш int a в регистр% EAX.

movswl 12(%ebp), %edx содержит short b в регистре% EDX.

С subl %edx, %eax вычитает% EDX от% EAX вы получили (а - Ь)

+0

Хорошо большое спасибо. – temptester1234