1
2 #include <stdio.h>
3
movzbw_1(void)4 static int movzbw_1 ( void )
5 {
6 int res;
7 __asm__ __volatile__(
8 "movl $0x12345678, %%eax\n\t"
9 "movb $0x22, %%al\n\t"
10 "movzbw %%al,%%ax\n\t"
11 "mov %%eax, %0"
12 : "=r"(res) : : "eax"
13 );
14 return res;
15 }
16
movzbw_2(void)17 static int movzbw_2 ( void )
18 {
19 int res;
20 __asm__ __volatile__(
21 "movl $0x12345678, %%eax\n\t"
22 "movb $0x99, %%al\n\t"
23 "movzbw %%al,%%ax\n\t"
24 "mov %%eax, %0"
25 : "=r"(res) : : "eax"
26 );
27 return res;
28 }
29
movzbl_1(void)30 static int movzbl_1 ( void )
31 {
32 int res;
33 __asm__ __volatile__(
34 "movl $0x12345678, %%eax\n\t"
35 "movb $0x22, %%al\n\t"
36 "movzbl %%al,%%eax\n\t"
37 "mov %%eax, %0"
38 : "=r"(res) : : "eax"
39 );
40 return res;
41 }
42
movzbl_2(void)43 static int movzbl_2 ( void )
44 {
45 int res;
46 __asm__ __volatile__(
47 "movl $0x12345678, %%eax\n\t"
48 "movb $0x99, %%al\n\t"
49 "movzbl %%al,%%eax\n\t"
50 "mov %%eax, %0"
51 : "=r"(res) : : "eax"
52 );
53 return res;
54 }
55
movzwl_1(void)56 static int movzwl_1 ( void )
57 {
58 int res;
59 __asm__ __volatile__(
60 "movl $0x12345678, %%eax\n\t"
61 "movw $0x2222, %%ax\n\t"
62 "movzwl %%ax,%%eax\n\t"
63 "mov %%eax, %0"
64 : "=r"(res) : : "eax"
65 );
66 return res;
67 }
68
movzwl_2(void)69 static int movzwl_2 ( void )
70 {
71 int res;
72 __asm__ __volatile__(
73 "movl $0x12345678, %%eax\n\t"
74 "movw $0x9999, %%ax\n\t"
75 "movzwl %%ax,%%eax\n\t"
76 "mov %%eax, %0"
77 : "=r"(res) : : "eax"
78 );
79 return res;
80 }
81
movsbw_1(void)82 static int movsbw_1 ( void )
83 {
84 int res;
85 __asm__ __volatile__(
86 "movl $0x12345678, %%eax\n\t"
87 "movb $0x22, %%al\n\t"
88 "movsbw %%al,%%ax\n\t"
89 "mov %%eax, %0"
90 : "=r"(res) : : "eax"
91 );
92 return res;
93 }
94
movsbw_2(void)95 static int movsbw_2 ( void )
96 {
97 int res;
98 __asm__ __volatile__(
99 "movl $0x12345678, %%eax\n\t"
100 "movb $0x99, %%al\n\t"
101 "movsbw %%al,%%ax\n\t"
102 "mov %%eax, %0"
103 : "=r"(res) : : "eax"
104 );
105 return res;
106 }
107
movsbl_1(void)108 static int movsbl_1 ( void )
109 {
110 int res;
111 __asm__ __volatile__(
112 "movl $0x12345678, %%eax\n\t"
113 "movb $0x22, %%al\n\t"
114 "movsbl %%al,%%eax\n\t"
115 "mov %%eax, %0"
116 : "=r"(res) : : "eax"
117 );
118 return res;
119 }
120
movsbl_2(void)121 static int movsbl_2 ( void )
122 {
123 int res;
124 __asm__ __volatile__(
125 "movl $0x12345678, %%eax\n\t"
126 "movb $0x99, %%al\n\t"
127 "movsbl %%al,%%eax\n\t"
128 "mov %%eax, %0"
129 : "=r"(res) : : "eax"
130 );
131 return res;
132 }
133
movswl_1(void)134 static int movswl_1 ( void )
135 {
136 int res;
137 __asm__ __volatile__(
138 "movl $0x12345678, %%eax\n\t"
139 "movw $0x2222, %%ax\n\t"
140 "movswl %%ax,%%eax\n\t"
141 "mov %%eax, %0"
142 : "=r"(res) : : "eax"
143 );
144 return res;
145 }
146
movswl_2(void)147 static int movswl_2 ( void )
148 {
149 int res;
150 __asm__ __volatile__(
151 "movl $0x12345678, %%eax\n\t"
152 "movw $0x9999, %%ax\n\t"
153 "movswl %%ax,%%eax\n\t"
154 "mov %%eax, %0"
155 : "=r"(res) : : "eax"
156 );
157 return res;
158 }
159
160
161
main(void)162 int main ( void )
163 {
164 printf("%8s 0x%08x\n", "movzbw_1", movzbw_1());
165 printf("%8s 0x%08x\n", "movzbw_2", movzbw_2());
166 printf("%8s 0x%08x\n", "movzbl_1", movzbl_1());
167 printf("%8s 0x%08x\n", "movzbl_2", movzbl_2());
168 printf("%8s 0x%08x\n", "movzwl_1", movzwl_1());
169 printf("%8s 0x%08x\n", "movzwl_2", movzwl_2());
170 printf("%8s 0x%08x\n", "movsbw_1", movsbw_1());
171 printf("%8s 0x%08x\n", "movsbw_2", movsbw_2());
172 printf("%8s 0x%08x\n", "movsbl_1", movsbl_1());
173 printf("%8s 0x%08x\n", "movsbl_2", movsbl_2());
174 printf("%8s 0x%08x\n", "movswl_1", movswl_1());
175 printf("%8s 0x%08x\n", "movswl_2", movswl_2());
176 return 0;
177 }
178