Автор Тема: системни и приложни езици  (Прочетена 5454 пъти)

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6896
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: системни и приложни езици
« Отговор #15 -: Oct 25, 2012, 09:51 »
М-м в грешка съм май, не бях подозирал до какви висини е стигнала CISC последните десетина години, след ерата Котлон/П3. Ама то за туй е форум — да си изправяме кривините едни другиму.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: системни и приложни езици
« Отговор #16 -: Oct 25, 2012, 13:34 »
Кода, който gat3way е дал ще работи на всеки 32 или 64 битов x86 процесор.
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: системни и приложни езици
« Отговор #17 -: Oct 25, 2012, 15:37 »
Абе аз за писане на асемлер ;D ползвам fasm главно щото го има за всички дистрота..
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: системни и приложни езици
« Отговор #18 -: Oct 25, 2012, 15:50 »
Цитат
Кода, който gat3way е дал ще работи на всеки 32 или 64 битов x86 процесор.

Нe съм убеден, rip е 64-битовия instruction pointer.
Активен

"Knowledge is power" - France is Bacon

d0ni

  • Напреднали
  • *****
  • Публикации: 183
    • Профил
Re: системни и приложни езици
« Отговор #19 -: Oct 25, 2012, 19:22 »
Цитат
   0x00000000004004a6 <+18>:    mov    %eax,-0x4(%rbp)
   0x00000000004004a9 <+21>:    mov    -0x4(%rbp),%eax
   0x00000000004004ac <+24>:    mov    %eax,0x2003d2(%rip)       

offtopic: някаква представа защо компилатора е генерирал първите 2 реда? Струват ми се излишни. Резултата от събирането е в eax, не би ли трябвало да го запише направо в 0x2003d2(%rip)
Активен

remotex

  • Напреднали
  • *****
  • Публикации: 344
    • Профил
Re: системни и приложни езици
« Отговор #20 -: Oct 25, 2012, 21:13 »
Без изходния код мога само да гадая, но предполагам при следния случай
Код
GeSHi (C):
  1. int foo(){
  2.  int result = 1+1;
  3.  return result
  4. }
Ще се наложи резултата от 1+1 да го хвърли веднъж в result (BP-4 напр.) и още веднъж към return т.е. EAX
е зависи от това с какво оптимизации е компилирано...
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: системни и приложни езици
« Отговор #21 -: Oct 25, 2012, 23:02 »
Дам, така е. Все пак втория mov не ми е ясно защо се прави - стойността вече би трябвало да си е в eax.
Активен

"Knowledge is power" - France is Bacon

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: системни и приложни езици
« Отговор #22 -: Oct 26, 2012, 10:00 »
Нe съм убеден, rip е 64-битовия instruction pointer.
Честно казано не погледнах инструкцията, вдиях че се ползват 32 битовите регистри и реших че ще работи на 32 битов процесор. Silly me  :(
Активен

rscossworth

  • Участници
  • ***
  • Публикации: 5
    • Профил
    • WWW
Re: системни и приложни езици
« Отговор #23 -: Jan 14, 2013, 21:12 »
Разбирам ви прекрасно, но за reverse engineering асемблера няма алтернатива  >:D
Активен