Advertisement
gbulmer

stackoverflow-9767686-ARM-as

Mar 20th, 2012
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. # Compares two methods of testing bit 5
  2. # Clarify compiler behaviour for stackoverflow.com topic 9767686
  3. # Created by G Bulmer on 19/03/2012.
  4.  
  5.  
  6. main.o: file format elf32-littlearm
  7.  
  8.  
  9. Disassembly of section .text.main:
  10.  
  11. 00000000 <main>:
  12. #include "dummy_printf.h" // get rid of stdio.h
  13.  
  14. #include "original_bit5.h"
  15. #include "my_bit5.h"
  16.  
  17. int main (int argc, const char * argv[]) {
  18. 0: b508 push {r3, lr}
  19. int number = 16;
  20.  
  21. original_bit5(number);
  22. 2: 2010 movs r0, #16
  23. 4: f7ff fffe bl 0 <original_bit5>
  24.  
  25. my_bit5(number);
  26. 8: 2010 movs r0, #16
  27. a: f7ff fffe bl 0 <my_bit5>
  28.  
  29. return 0;
  30. }
  31. e: 2000 movs r0, #0
  32. 10: bd08 pop {r3, pc}
  33. 12: bf00 nop
  34.  
  35. original_bit5.o: file format elf32-littlearm
  36.  
  37.  
  38. Disassembly of section .text.original_bit5:
  39.  
  40. 00000000 <original_bit5>:
  41. #include "original_bit5.h"
  42.  
  43. void original_bit5(int number) {
  44. int mask = 1<<5;
  45.  
  46. if ((number & mask) == 0)
  47. 0: f010 0f20 tst.w r0, #32
  48. 4: d005 beq.n 1a <original_bit5+0x1a>
  49. dummy_printf("Bit is off");
  50. else
  51. dummy_printf("its on");
  52. 6: f240 0000 movw r0, #0
  53. a: f2c0 0000 movt r0, #0
  54. e: f7ff bffe b.w 0 <dummy_printf>
  55.  
  56. void original_bit5(int number) {
  57. int mask = 1<<5;
  58.  
  59. if ((number & mask) == 0)
  60. dummy_printf("Bit is off");
  61. 12: f240 0000 movw r0, #0
  62. 16: f2c0 0000 movt r0, #0
  63. 1a: f7ff bffe b.w 0 <dummy_printf>
  64. 1e: bf00 nop
  65.  
  66. my_bit5.o: file format elf32-littlearm
  67.  
  68.  
  69. Disassembly of section .text.my_bit5:
  70.  
  71. 00000000 <my_bit5>:
  72. #include "dummy_printf.h" // get rid of stdio.h
  73.  
  74. #include "my_bit5.h"
  75.  
  76. void my_bit5(int number) {
  77. dummy_printf((number & 0x20)?"its on":"Bit is off");
  78. 0: f240 0200 movw r2, #0
  79. 4: f240 0300 movw r3, #0
  80. 8: f010 0f20 tst.w r0, #32
  81. c: f2c0 0200 movt r2, #0
  82. 10: f2c0 0300 movt r3, #0
  83. 14: bf14 ite ne
  84. 16: 4610 movne r0, r2
  85. 18: 4618 moveq r0, r3
  86. 1a: f7ff bffe b.w 0 <dummy_printf>
  87. 1e: bf00 nop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement