Style/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
mNo edit summary
Line 5: Line 5:
При написании процедур необходимо перед процедурой указывать входные, выходные параметры, так же указывать какие регистры изменяются.
При написании процедур необходимо перед процедурой указывать входные, выходные параметры, так же указывать какие регистры изменяются.


;in:  eax = pointer
<syntaxhighlight lang="asm"> ;in:  eax = pointer
  ;    ebx = PID
  ;    ebx = PID
  ;out: eax = return code in (0,-1)
  ;out: eax = return code in (0,-1)
  ;destroys eax
  ;destroys eax
  ;================================
  ;================================
  subrutine:
  subrutine:</syntaxhighlight>


При написании процедур очень полезно комментировать их способом, показанным ниже.
При написании процедур очень полезно комментировать их способом, показанным ниже.
Line 16: Line 16:
Тогда даже человек, только начинающий изучать ассемблер, сразу поймёт, что далает данная функция. И наоборот, даже самому опытному программисту может понадобится некторое время просто на понимание того, что делает данная функция.
Тогда даже человек, только начинающий изучать ассемблер, сразу поймёт, что далает данная функция. И наоборот, даже самому опытному программисту может понадобится некторое время просто на понимание того, что делает данная функция.


;-----------------------------------------------------------------------------
<syntaxhighlight lang="asm"> ;-----------------------------------------------------------------------------
  proc key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
  proc key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
  ;-----------------------------------------------------------------------------
  ;-----------------------------------------------------------------------------
Line 22: Line 22:
   ...
   ...
   ...
   ...
  endp
  endp</syntaxhighlight>


Если Вы вносите изменения или добавление в программу, неважно каких размеров, полезно как-то помечать добавленный код, попутно описывая, какую операцию он выполняет. Тогда потом никто не  будет недоумевать "А это здесь откуда и что оно вообще делает?".  
Если Вы вносите изменения или добавление в программу, неважно каких размеров, полезно как-то помечать добавленный код, попутно описывая, какую операцию он выполняет. Тогда потом никто не  будет недоумевать "А это здесь откуда и что оно вообще делает?".  
Line 28: Line 28:
Делать это можно так, как показано ниже:
Делать это можно так, как показано ниже:


;// diamond [ (convert size from decimal representation to dword)
<syntaxhighlight lang="asm"> ;// diamond [ (convert size from decimal representation to dword)
  ;--    mov    edx,dword[@PARAMS+1]
  ;--    mov    edx,dword[@PARAMS+1]
   mov esi,@PARAMS+1
   mov esi,@PARAMS+1
Line 40: Line 40:
  jmp @b
  jmp @b
     @@:
     @@:
  ;// diamond ]
  ;// diamond ]</syntaxhighlight>


[[Category:Кодинг]]
[[Category:Кодинг]]

Revision as of 19:35, 31 July 2012

Стиль оформления

Рекомендации по оформлению кода.

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

 ;in:  eax = pointer
 ;     ebx = PID
 ;out: eax = return code in (0,-1)
 ;destroys eax
 ;================================
 subrutine:

При написании процедур очень полезно комментировать их способом, показанным ниже.

Тогда даже человек, только начинающий изучать ассемблер, сразу поймёт, что далает данная функция. И наоборот, даже самому опытному программисту может понадобится некторое время просто на понимание того, что делает данная функция.

 ;-----------------------------------------------------------------------------
 proc key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
 ;-----------------------------------------------------------------------------
   ...
   ...
   ...
 endp

Если Вы вносите изменения или добавление в программу, неважно каких размеров, полезно как-то помечать добавленный код, попутно описывая, какую операцию он выполняет. Тогда потом никто не будет недоумевать "А это здесь откуда и что оно вообще делает?".

Делать это можно так, как показано ниже:

 ;// diamond [ (convert size from decimal representation to dword)
 ;--     mov     edx,dword[@PARAMS+1]
  	mov	esi,@PARAMS+1
 	xor	edx,edx
 	xor	eax,eax
     @@: lodsb
 	test	al,al
 	jz	@f
 	lea	edx,[edx*4+edx]
 	lea	edx,[edx*2+eax-'0']
 	jmp	@b
     @@:
 ;// diamond ]