Сейчас на форуме: tyns777, zds, JustLife (+4 невидимых)

 eXeL@B —› Программирование —› Visual C++ мусор в функциях
Посл.ответ Сообщение

Ранг: 107.5 (ветеран)
Активность: 0.150
Статус: Участник

Создано: 15 апреля 2009 01:52 · Поправил: Stack
· Личное сообщение · #1

Вот что Visual c++ выдает при функции с простой строчкой
int m = 5;

оно и понятно но мне нужно одну функцию на чистом ассемблере написать (надо читать кое-какие данные из стэка)

Code:
  1.   push        ebp  
  2. mov         ebp,esp 
  3. sub         esp,48h 
  4. push        ebx  
  5. push        esi  
  6. push        edi  
  7. dword ptr [ebp-4],ecx 
  8. mov         dword ptr [m],5 
  9. pop         edi  
  10. pop         esi  
  11. pop         ebx  
  12. mov         esp,ebp 
  13. pop         ebp  
  14. ret         4


возможно отключить генерацию этого мусора в конкретной функции? или прийдется каждый раз вручную править код?

-----
Md5 fcbb6c9c9a5029b24d70f2d67c7cca74





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 15 апреля 2009 02:20
· Личное сообщение · #2

1) build release (optimization on)
2) __declspec( naked ) msdn.microsoft.com/en-us/library/h5w10wxs(VS.80).aspx




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 15 апреля 2009 02:28 · Поправил: BoRoV
· Личное сообщение · #3

а ты компили с опциями Релиз, а не Дебуг, и не будет мусора
на твоем примере, создал функу в которой только написал int m = 5;, с опциями релиз он ее скомпилил в простой RET, и ничего больше, пришлось написать что функа возращает эту m, и тогда она имела вид
Code:
  1. 00401000  /.  B8 05000000   MOV EAX,5
  2. 00401005  \.  C3            RET


-----
Лучше быть одиноким, но свободным © $me




Ранг: 107.5 (ветеран)
Активность: 0.150
Статус: Участник

Создано: 15 апреля 2009 02:32
· Личное сообщение · #4

s0larian, BoRoV
Большое спасибо просто я в этом мелкософтском с++ еще не до конца разобрался.

-----
Md5 fcbb6c9c9a5029b24d70f2d67c7cca74



 eXeL@B —› Программирование —› Visual C++ мусор в функциях
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати