rdtmain.asm
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. ;; rdtmain - main part of test program for RDX execution.
  2. ;; returns true (0) if its parameter equals the phrase "hello"
  3. ;; "hello" is stored in the library part, to complicate the
  4. ;; linkage.
  5. ;; assemble and link with the following commands:
  6. ;; nasm -f rdf rdtmain.asm
  7. ;; nasm -f rdf rdtlib.asm
  8. ;; ldrdf rdtmain.rdf rdtlib.rdf -o rdxtest.rdx
  9. ;; run with 'rdx rdxtest.rdx [parameters]' on a Linux (or possibly
  10. ;; other 32 bit OS) systems (x86 architectures only!)
  11. ;; try using '&& echo Yes' afterwards to find out when it returns 0.
  12. [EXTERN _strcmp] ; strcmp is an imported function
  13. [EXTERN _message] ; imported data
  14. [SECTION .text]
  15. [BITS 32]
  16. ;; main(int argc,char **argv)
  17. [GLOBAL _main]
  18. _main:
  19. push ebp
  20. mov ebp,esp
  21. ;; ebp+8 = argc, ebp+12 = argv
  22. cmp dword [ebp+8],2
  23. jb error ; cause error if < 1 parameters
  24. mov eax, [ebp+12] ; eax = argv
  25. mov ebx, [eax+4] ; ebx = argv[1]
  26. mov ecx, _message ; ecx = "hello"
  27. push ecx
  28. push ebx
  29. call _strcmp ; compare strings
  30. add esp,8 ; caller clears stack
  31. pop ebp
  32. ret ; return return value of _strcmp
  33. error:
  34. mov eax,2 ; return 2 on error
  35. pop ebp
  36. ret