Similar presentations:
Понятие архитектуры
1.
5/8/20242.
План лекции•Понятие архитектуры
•Система команд
•Рассмотрение примеров
сгенерированных листингов
3.
Понятиеархитектуры
4.
What is computerarchitecture?
• Frederick P. Brooks:
Computer architecture, like other
architecture, is the art of determining the
needs of the user of a structure and then
designing to meet those needs as effectively
as possible within economic and
technological constraints.
5.
Составляющие архитектуры•Типы данных / форматы данных
•Набор команд / набор инструкций
•Флаги, режимы работы процессора
•Архитектура подсистемы памяти
–Регистровая память (IP, ACC, спец., РОН, с окном)
–ОЗУ (простая, сегментная, сег. и стр. виртуальная)
•Архитектура подистемы прерывания
•Архитектура подсистемы I/O
•Интерфейс периферийных устройств
6.
Форматы данных•Разрядность 4, 8, 16, 32, 64, 80, 128, 256
•Endianness, (LSB, MSB)
•Выравнивание
•Тип – int, fp, bitmap, binstring, векторные
7.
EndiannessLSB
x86
x86_64
Atmel avr8
MSB
Atmel avr32
Motorola
6800
Xilinx
Microblaze
Bi-endian
ARM >v3
PowerPC
DEC Alpha
SGI MIPS
HP PA-RISC
8.
Система команд9.
Набор команд -- это множествоопераций, которые инициируются
программой и исполняются
процессором.
Набор команд -- это та
граница,
где проектировщик
компьютера
и
программист
рассматривают
Архитектуру, как единое целое.
Поэтому уровень команд должен
быть
удобен
и
согласован с
разработчиками АО и ПО.
10.
5/8/202411.
Основные группы команд•Пересылка данных
•Арифметические
•Логические, сравнения
•Битовые
•Управляющие
•Ввод-вывод
•системные
12.
Представления программы•Исходное - мнемоническое
–нотации Intel, AT&T
•Бинарное
13.
Нотация AT&T14.
Нотация Intel15.
Команды пересылки данныхX86
ARM
Reg -> Reg
mov %esp,%ebp
xchg %eax, %ebx
mov
mov
RAM -> Reg
mov 0x18(%esp),%edx
pop %eax
ldr r1, [fp, #-8]
ldr r2, [pc, #76]
pop {fp, pc}
Const -> Reg
movl $0x0,%eax
lea 0x1c(%esp),%eax
mov
Reg -> RAM
mov %eax,0x4(%esp)
push %ebp
str r3, [fp, #-8]
push {fp, lr}
Const -> RAM
movl $0x3,(%esp)
I/O
In al, 200
r0, r2
r1, r3
r3, #0
16.
17.
Режимы адресацииРежим адресации
X86
ARM
регистровая
mov %esp,%ebp
mov
r0, r2
непосредственная
movl $0x0,%eax
lea 0x1c(%esp),%eax
movl $0x3,(%esp)
mov
r3, #0
прямая
movl %eax, с
movl c, %eax
ldr
ldr
r3, .L2+4
r2, [r3, #0]
ldr
r3, [r3, #0]
ldr
ldr
str
r1, [fp, #-8]
r2, [pc, #76]
r3, [fp, #-8]
Косвенная регистровая
По базе
mov %eax,0x4(%esp)
mov 0x18(%esp),%edx
С индексированием
(и прямая, и по базе)
movl a(,%edx,4), %ecx
movl %edx, a(,%eax,4)
Seg:offs(base,idx,scale)
Стековая
push %ebp
pop %eax
push {fp, lr}
pop {fp, pc}
18.
Арифметические командыX86
ARM
+
addl %edx, %eax
addl $188, %eax
Inc, adc
add
add
r3, r2, r3
r2, r3, #188
-
sub %eax,%ecx
Dec, sbb
sub
r3, fp, #32
*
imul %edx,%eax
mul
r4, r2, r3
/
idivl 0x1c(%esp)
# Edx:eax / 0x1c(%esp)
# результат -> eax
# остаток -> edx
FP
flds 0x18(%esp)
fadds 0x1c(%esp)
fsubp %st,%st(1)
fmulp %st,%st(1)
fdivrp %st,%st(1)
fstps 0x1c(%esp)
vldr
s15, [fp, #-36]
vadd.f32 s14, s14, s15
vsub.f32 s15, s13, s15
vmul.f32 s14, s14, s15
vdiv.f32
s15, s13, s15
vstr
s15, [fp, #-20]
19.
Флаговый регистр в x8620.
Флаговый регистр в ARM21.
Пример: + -> x86int a, b, c;
…
c = a + b;
…
31: 8b 54 24 18 mov 0x18(%esp),%edx
35: 8b 44 24 14 mov 0x14(%esp),%eax
39: 01 d0
add %edx,%eax
3b: 89 44 24 1c mov %eax,0x1c(%esp)
22.
Пример: + -> arm/bpiint a, b, c;
…
c = a + b;
…
34: e51b200c
ldr
r2, [fp, #-12]
38: e51b3010
3c: e0823003
40: e50b3008
ldr r3, [fp, #-16]
add r3, r2, r3
str r3, [fp, #-8]
23.
Битовые команды икоманды сравнения
Битовые команды – x86
SHL, SHR,
ROL, ROR – циклический сдвиг
AND, OR, NOT, XOR
Команды сравнения – x86
CMP,
TEST,
арифметические команды могут изменять
флаги
24.
Управляющие команды•Условный переход
•Безусловный переход
•Безусловный вызов подпрограммы
•Условный вызов подпрограммы
•Возврат из подпрограммы
•Генерация исключения
•Возврат из обработчика исключения
25.
Пример 1. Ifint i;
...
if( i ) {
i = 0;
} else {
i = 1;
}
26.
Пример 1. If -> x86movl
testl
je
movl
jmp
28(%esp), %eax
%eax, %eax
.L2
$0, 28(%esp)
.L3
.L2:
movl $1, 28(%esp)
.L3:
27.
Пример 1. If -> ARM/RPIldr
cmp
beq
mov
str
b
r3, [fp, #-8]
r3, #0
.L2
r3, #0
r3, [fp, #-8]
.L3
mov
str
r3, #1
r3, [fp, #-8]
.L2:
.L3:
28.
Системные командыПереходы между режимами
•8086/8088 - реальный
•80286 - реальный, защищенный
•80386 – реальный, защищенный,
виртуальный
•x86_64
•ARM - нормальный, thumb, режимы
обработки прерываний