OSDev
http://osdev.su/

Самое главное в жизни!
http://osdev.su/viewtopic.php?f=18&t=431
Страница 1 из 2

Автор:  418ImATeapot [ 12 июл 2011, 10:19 ]
Заголовок сообщения:  Самое главное в жизни!

Перечислите, пожалуйста 8 самых необходимых арифметических операций (без которых вы жить не можете) + 2, без которых жизнь для вас станет подобна Brainfuckу.
Я думаю, так:
  1. ADD
  2. SUB
  3. SHL
  4. SHR
  5. NOR
  6. AND
  7. XOR
  8. NOT,
а дальше не могу решить, MUL/DIV или INC/DEC. С одной стороны, MUL/DIV можно и вручную...

Автор:  Yoda [ 20 июл 2011, 23:45 ]
Заголовок сообщения:  Re: Самое главное в жизни!

Вообще-то можно жить всего-навсего с одной инструкцией, – SUBLEQ.
А если без брейнфака, то одной арифметикой не обойтись. Самая распространённая и часто исполняемая инструкция – MOV.

Автор:  418ImATeapot [ 21 июл 2011, 11:31 ]
Заголовок сообщения:  Re: Самое главное в жизни!

С mov, jmp, hlt, lgtd, rmsw, pushad, into, cli, rep, lodsb, enter, leave понятно. Я спрашиваю именно об арифметике. Ljgecnbv, разрабатывается новая архитектура. У нее должно быть 64 инструкции. Причем, есть 4 варианта для каждой арифметической инструкции: byte, word, dword, bword. И как миниум 24 инструкци - mov, jmp, hlt, cli

Автор:  ZarathustrA [ 21 июл 2011, 17:08 ]
Заголовок сообщения:  Re: Самое главное в жизни!

могу предложить попробовать подойти к вопросу со стороны статистики: вскройте пару тройку крупных программ и подсчитайте частотность различных инструкций. В итого вы сможете примерно определить наиболее часто используемые инструкции. Можно предположить, что наиболее часто используемые инструкции являются наиболее нужными.

Автор:  Yoda [ 21 июл 2011, 17:17 ]
Заголовок сообщения:  Re: Самое главное в жизни!

Тогда MUL/DIV. Ибо программно они реализуются очень медленно, при любой возможности их надо аппаратизировать. INC и DEC не обязательно, это лишь короткая запись от ADD 1 и SUB 1.
Если разрабатывается архитектура для сигнального процессора, настоятельно рекомендуется задуматься о 32-битных чисел в формате с плавающей точкой и инструкции Fused Multiply and Add.
И почему NOR, а не OR? Это ведь не базовый логический элемент, в жизни OR встречается чаще, чем NOR.
И что такое BWORD? 64 бита принято называть QWORD.

Автор:  ZarathustrA [ 21 июл 2011, 17:22 ]
Заголовок сообщения:  Re: Самое главное в жизни!

Примерная статистика по ntkrnlpa.exe из Windows 7

mov 20972
push 9750
cmp 4705
call 4120
jz 3675
test 2980
pop 2910
jnz 2779
lea 2518
jmp 2438
xor 2222
and 2076
add 1772 !
inc 1350 !
retn 1070
sub 894 !
movzx 886
imp 774
lock 694
dec 656 !
jb 543
shr 503 !
jnb 390
jbe 389
ja 307
shl 295 !
jl 265
xadd 240 !
cmpxchg 135
movsd 132
bts 128
jge 124
sbb 89
stosd 87

Автор:  Yoda [ 21 июл 2011, 17:26 ]
Заголовок сообщения:  Re: Самое главное в жизни!

Классная статистика!
Я кстати, почти уверен, что XOR забрался так высоко из-за использования для очистки регистра.

Автор:  418ImATeapot [ 21 июл 2011, 19:09 ]
Заголовок сообщения:  Re: Самое главное в жизни!

За статистику - спасибо.

С XOR все понятно. А вот почему так далеко ушел CALL? Из-за того, что писано в C?

Автор:  SII [ 21 июл 2011, 20:39 ]
Заголовок сообщения:  Re: Самое главное в жизни!

Yoda писал(а):
И что такое BWORD? 64 бита принято называть QWORD.


Не знаю, что под Б имел в виду автор сего обозначения, но вот насчёт "принято называть" Вы погорячились. Принято для платформы ИА-32, но на других платформах сие может быть совсем другим. Например, у ИБМовских мэйнфреймов и у АРМов слово -- это 32 бита, а 64, соответственно, двойное слово (а 16 бит -- полуслово).

Автор:  ZarathustrA [ 21 июл 2011, 21:03 ]
Заголовок сообщения:  Re: Самое главное в жизни!

Вы только эту статистику за абсолют не принимайте. :) Это только одна программа.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/