Код: Выделить всё
00: leal (BP_scratch+4)(%esi), %esp
01: call 1f
02: 1: popl %edx
03: addl $_GLOBAL_OFFSET_TABLE_+(.-1b), %edx
04:
05: /* Load new GDT */
06: leal gdt@GOTOFF(%edx), %eax
07: movl %eax, 2(%eax)
08: lgdt (%eax)
09:
0A: /* Load segment registers with our descriptors */
0B: movl $__BOOT_DS, %eax
0C: movl %eax, %ds
0D: movl %eax, %es
0E: movl %eax, %fs
0F: movl %eax, %gs
10: movl %eax, %ss
< /code>
[list]
[*] Что проводится в $ esi < /code> в первой строке? < /li>
Поскольку это начало новая программа, что удерживается в стеке и заскочила для хранения в %edx [*] Наконец, почему все регистры сегмента загружаются с __boot_ds постоянными?
[/list]
Подробнее здесь: https://stackoverflow.com/questions/794 ... ntry-point
Мобильная версия