рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

gt;>> врезка переход в 64-разрдяный режим

gt;>> врезка переход в 64-разрдяный режим - раздел Программирование, Архитектура x86-64 под скальпелем ассемблерщика В Исходниках Freebsd Можно Найти Файл Amd64_Tramp.s, Быстро И Грязно Переводя...

В исходниках FreeBSD можно найти файл amd64_tramp.S, быстро и грязно переводящий процессор в 64-режим. Откомпилировав, его можно записать в boot-сектор, загружающий нашу собственную операционную систему (вы ведь пишите ее, правда?) или слинковать com-файл, запускаемый из реального x86-режима (для этого потребуется чистая MS-DOS безо всяких экстендеров). В общем, вариантов много…

 

//$FreeBSD: /repoman/r/ncvs/src/sys/boot/i386/libi386/amd64_tramp.S,v 1.4 2004/05/14

 

/*

* Quick and dirty trampoline to get into 64 bit (long) mode and running

* with paging enabled so that we enter the kernel at its linked address.

*/

#define MSR_EFER 0xc0000080

#define EFER_LME 0x00000100

#define CR4_PAE 0x00000020

#define CR4_PSE 0x00000010

#define CR0_PG 0x80000000

 

/* GRRR. Deal with BTX that links us for a non-zero location */

#define VPBASE 0xa000

#define VTOP(x) ((x) + VPBASE)

 

.data

 

.p2align 12,0x40

 

.globl PT4

PT4:

.space 0x1000

.globl PT3

PT3:

.space 0x1000

.globl PT2

PT2:

.space 0x1000

 

gdtdesc:

.word gdtend - gdt

.long VTOP(gdt) # low

.long 0 # high

 

gdt:

.long 0 # null descriptor

.long 0

.long 0x00000000 # %cs

.long 0x00209800

.long 0x00000000 # %ds

.long 0x00008000

gdtend:

 

.text

.code32

 

.globl amd64_tramp

amd64_tramp:

/* Be sure that interrupts are disabled */

cli

 

/* Turn on EFER.LME */

movl $MSR_EFER, %ecx

rdmsr

orl $EFER_LME, %eax

wrmsr

 

/* Turn on PAE */

movl %cr4, %eax

orl $(CR4_PAE | CR4_PSE), %eax

movl %eax, %cr4

 

/* Set %cr3 for PT4 */

movl $VTOP(PT4), %eax

movl %eax, %cr3

 

/* Turn on paging (implicitly sets EFER.LMA) */

movl %cr0, %eax

orl $CR0_PG, %eax

movl %eax, %cr0

 

/* Now we're in compatability mode. set %cs for long mode */

movl $VTOP(gdtdesc), %eax

movl VTOP(entry_hi), %esi

movl VTOP(entry_lo), %edi

lgdt (%eax)

ljmp $0x8, $VTOP(longmode)

 

.code64

longmode:

/* We're still running V=P, jump to entry point */

movl %esi, %eax

salq $32, %rax

orq %rdi, %rax

pushq %rax

ret

Листинг 7 перевод процессора в 64-разрядный режим

– Конец работы –

Эта тема принадлежит разделу:

Архитектура x86-64 под скальпелем ассемблерщика

На сайте allrefs.net читайте: "Архитектура x86-64 под скальпелем ассемблерщика"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: gt;>> врезка переход в 64-разрдяный режим

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Что нам понадобиться?
Для программирования в 64-режтме желательно иметь компьютер с процессором AMD Athlon FX или Opertorn, но на худой конец можно обойтись и эмулятором. Существует не так уж много эмуляторов под x86-64

Обзор x86-64
За подробным описанием x86-64 архитектуры лучше всего обратится к фирменной документации "AMD64 Technology — AMD64 Architecture Programmer's Manual Volume 1:Application Programming" (http

NOP ; команда, чем опкод мы хотим загрузить в AL
Листинг 3 загрузка опкода следующей машинной команды в классическом x86 Это же умом поехать можно пока все это писать! И еще здесь очень легко ошибиться в размере команд, которых приходитс

NOP ; команда, чем опкод мы хотим загрузить в AL
Листинг 4 загрузка опкода следующей машинной команды на x86-64 Крррасота! Только следует помнить, что RIP всегда указывает на следующую, а отнюдь не текущую инструкцию! К сожалению, ни Jx

Hello world на x86-64
Программирование под 64-битную версию Windows мало чем отличается от традиционного, только все операнды и адреса по умолчанию 64-разярные, а параметры API-функций передаются через регистры, а не че

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги