strcmp.ssa 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # the C strcmp function generated by scc
  2. export function w $strcmp(l %s1.3.val,l %s2.5.val)
  3. {
  4. @.37
  5. %s1.3 =l alloc8 8
  6. %s2.5 =l alloc8 8
  7. storel %s1.3.val,%s1.3
  8. storel %s2.5.val,%s2.5
  9. jmp @.5
  10. @.6
  11. %.9 =l loadl %s1.3
  12. %.10 =l add %.9,1
  13. storel %.10,%s1.3
  14. %.11 =l loadl %s2.5
  15. %.12 =l add %.11,1
  16. storel %.12,%s2.5
  17. @.5
  18. %.15 =l loadl %s1.3
  19. %.16 =w loadsb %.15
  20. %.17 =w extsb %.16
  21. %.18 =w cnew %.17,0
  22. jnz %.18,@.14,@.8
  23. @.14
  24. %.19 =l loadl %s2.5
  25. %.20 =w loadsb %.19
  26. %.21 =w extsb %.20
  27. %.22 =w cnew %.21,0
  28. jnz %.22,@.13,@.8
  29. @.13
  30. %.23 =l loadl %s1.3
  31. %.24 =w loadsb %.23
  32. %.25 =w extsb %.24
  33. %.26 =l loadl %s2.5
  34. %.27 =w loadsb %.26
  35. %.28 =w extsb %.27
  36. %.29 =w ceqw %.25,%.28
  37. jnz %.29,@.6,@.8
  38. @.8
  39. @.7
  40. %.30 =l loadl %s1.3
  41. %.31 =w loadub %.30
  42. %.32 =w extub %.31
  43. %.33 =l loadl %s2.5
  44. %.34 =w loadub %.33
  45. %.35 =w extub %.34
  46. %.36 =w sub %.32,%.35
  47. ret %.36
  48. }
  49. # >>> driver
  50. # extern int strcmp(const char *, const char *);
  51. # int main() {
  52. # char a[] = "Hello world";
  53. # return !(
  54. # strcmp(a, a) == 0 &&
  55. # strcmp("aaa", "aab") < 0 &&
  56. # strcmp("..cnn", "..bbc") > 0 &&
  57. # strcmp(a, "Hellp ...") < 0 &&
  58. # strcmp(a, "Hello vorld") > 0
  59. # );
  60. # }
  61. # <<<