код операции регистра %ebx

Я написал следующую программу на ассемблере, чтобы получить код операции различных регистров:

.section .text
.globl _start
_start:
add $1,%eax                                                          
add $1,%ebx                                                          
add $1,%ecx                                                          
add $1,%edx                                                          
add $1,%esp                                                             
add $1,%ebp                                                             
add $1,%esi                                                          
add $1,%edi                                                          
int $0x80

Я компилирую и связываю с:

gcc -c prog.s && ld prog.o

и дамп объекта:


0000000000400078 <_start>:
  400078:   83 c0 01                add    $0x1,%eax
  40007b:   83 c3 01                add    $0x1,%ebx
  40007e:   83 c1 01                add    $0x1,%ecx
  400081:   83 c2 01                add    $0x1,%edx
  400084:   83 c4 01                add    $0x1,%esp
  400087:   83 c5 01                add    $0x1,%ebp
  40008a:   83 c6 01                add    $0x1,%esi
  40008d:   83 c7 01                add    $0x1,%edi
  400090:   cd 80                   int    $0x80

Я ожидаю, что %ebx будет иметь код операции c1, но это не так. Итак, мой вопрос: почему c3 является кодом операции %ebx для этих add инструкций?


person MAGA    schedule 15.10.2018    source источник