x86 Machine Code Statistics

Новости и интересная информация из интернета по нашей теме

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

x86 Machine Code Statistics

Post by Lavr »

Интересную статистику я неожиданно нашел: x86 Machine Code Statistics.
Меня давно что-то подобное интересовало, с тех пор, как мы подсчитывали
статистику заимствований в BASIC-ax...
Top20x86.gif
В обсуждении результата пишут, что выборка была нерепрезентативна, но всё равно интересно.

Я поискал и другую статистику, меня больше интересовали CALL и RET, гуглил я прямо фразу:
x86 Machine Code Statistics
По другим источникам CALL и RET могут занимать от 3% до более 10% кода x86...


P.S. Страница эта у меня кривовато открывается, поэтому я сделал её pdf-копию, если кому-либо
вдруг станет интересна прочая статистика по кодам x86.
x86_machine_code_statistics.pdf
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: x86 Machine Code Statistics

Post by Shaos »

Я последнее время считаю статистику инструкций RISC-V тут и тут ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: x86 Machine Code Statistics

Post by Lavr »

А как ты её считаешь?
Мне этот вопрос был интересен вот с какой точки зрения: когда в своё время посчитали
статистику использования команд процессорами, то пришли к мысли о RISC-процессорах.

Вот только неизвестно, как считали... :-?

Человек, на которого я дал ссылку, декомпилировал программы и подсчитывал явные инструкции,
чтобы тексты и данные не портили ему статистику.
Но и то им что-то не все остались доволны.
iLavr
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: x86 Machine Code Statistics

Post by Shaos »

Lavr wrote:А как ты её считаешь?
Я в эмулятор вставил счётчиков и инкрементирую соответствующий счётчик когда та или иная инструкция походит через исполнительный модуль - эту статистику надо знать, чтобы ускорять критически важные инструкции в первую очередь (те, что чаще используются)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: x86 Machine Code Statistics

Post by Lavr »

Shaos wrote:Я в эмулятор вставил счётчиков...
Спасибо! :kruto: Я что-то не додумался до эмуляторов... :o
Крутил мысли вокруг живых процессоров и программ...
iLavr
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: x86 Machine Code Statistics

Post by jdigreze »

Lavr wrote:Интересную статистику я неожиданно нашел: x86 Machine Code Statistics.
Меня давно что-то подобное интересовало, с тех пор, как мы подсчитывали
статистику заимствований в BASIC-ax...
Top20x86.gif
В обсуждении результата пишут, что выборка была нерепрезентативна, но всё равно интересно.
Любопытно, что команды PUSH используются более чем в 2 раза чаще чем POP.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: x86 Machine Code Statistics

Post by Lavr »

jdigreze wrote:Любопытно, что команды PUSH используются более чем в 2 раза чаще чем POP.
А там по ссылке это отмечено и объяснено. х86 используют стек для передачи параметров подпрограмме.
Забрасывают параметры в стек через PUSH, а вот подпрограмма их вынимает НЕ через POP.
Вынимают параметры вот так:

Code: Select all

                push  bp
                mov   bp,sp
                mov   ax,[bp+4]
                и т.д.
Поэтому в среднем и получается, что POP примерно в два раза меньше, чем PUSH.
iLavr