movl $0x2d, 0x4(%esp)
означает взять текущее значение указателя стека (%esp
), добавить 4 (0x4
), а затем сохранить длинное (32-разрядное) значение 0x2d
в этом месте.
Регистр eax
является одним из 32-разрядных регистров общего назначения.Архитектура x86 определяет следующие 32-разрядные регистры:
eax Accumulator Register
ebx Base Register
ecx Counter Register
edx Data Register
esi Source Index
edi Destination Index
ebp Base Pointer
esp Stack Pointer
, а имена и цели некоторых из них возвращаются к временам Intel 8080.
Эта страница дает хороший обзор регистров типа Intel.К первым четырем из приведенного выше списка также можно получить доступ как к 16-битным или двум 8-битным значениям.Например:
3322222222221111111111
10987654321098765432109876543210
<- eax ->
<- ax ->
<- ah -><- al ->
Регистры указателя и индекса не позволяют использовать 8-битные части, но вы можете иметь, например, 16-битную bp
.