[672] | 1 | title 631asmc.c
|
---|
| 2 | .386
|
---|
| 3 | .387
|
---|
| 4 | CODE32 segment para use32 public 'CODE'
|
---|
| 5 | CODE32 ends
|
---|
| 6 | DATA32 segment para use32 public 'DATA'
|
---|
| 7 | DATA32 ends
|
---|
| 8 | CONST32_RO segment para use32 public 'CONST'
|
---|
| 9 | CONST32_RO ends
|
---|
| 10 | BSS32 segment para use32 public 'BSS'
|
---|
| 11 | BSS32 ends
|
---|
| 12 | DGROUP group BSS32, DATA32
|
---|
| 13 | assume cs:FLAT, ds:FLAT, ss:FLAT, es:FLAT
|
---|
| 14 | CODE32 segment
|
---|
| 15 |
|
---|
[675] | 16 | ; 107 struct ret16bytes __stdcall asmfoostd16(void)
|
---|
[672] | 17 | align 010h
|
---|
| 18 |
|
---|
[675] | 19 | public _asmfoostd16@0
|
---|
| 20 | _asmfoostd16@0 proc
|
---|
[672] | 21 | push ebp
|
---|
| 22 | mov ebp,esp
|
---|
| 23 |
|
---|
[675] | 24 | ; 110 return ret;
|
---|
| 25 | mov eax,[ebp+08h]; @CBE10
|
---|
| 26 |
|
---|
| 27 | ; 109 struct ret16bytes ret = {1,2,3,4};
|
---|
| 28 | mov dword ptr [ebp-010h],01h; ret
|
---|
| 29 | mov dword ptr [ebp-0ch],02h; ret
|
---|
| 30 |
|
---|
| 31 | ; 110 return ret;
|
---|
| 32 | mov ecx,[ebp-010h]; ret
|
---|
| 33 | mov edx,[ebp-0ch]; ret
|
---|
| 34 | mov [eax],ecx
|
---|
| 35 |
|
---|
| 36 | ; 109 struct ret16bytes ret = {1,2,3,4};
|
---|
| 37 | mov dword ptr [ebp-08h],03h; ret
|
---|
| 38 |
|
---|
| 39 | ; 110 return ret;
|
---|
| 40 | mov [eax+04h],edx
|
---|
| 41 | mov edx,[ebp-08h]; ret
|
---|
| 42 |
|
---|
| 43 | ; 109 struct ret16bytes ret = {1,2,3,4};
|
---|
| 44 | mov dword ptr [ebp-04h],04h; ret
|
---|
| 45 |
|
---|
| 46 | ; 110 return ret;
|
---|
| 47 | mov ecx,[ebp-04h]; ret
|
---|
| 48 | mov [eax+08h],edx
|
---|
| 49 | mov [eax+0ch],ecx
|
---|
| 50 | pop ebp
|
---|
| 51 | ret 04h
|
---|
| 52 | _asmfoostd16@0 endp
|
---|
| 53 |
|
---|
| 54 | ; 101 struct ret12bytes __stdcall asmfoostd12(void)
|
---|
| 55 | align 010h
|
---|
| 56 |
|
---|
| 57 | public _asmfoostd12@0
|
---|
| 58 | _asmfoostd12@0 proc
|
---|
| 59 |
|
---|
| 60 | ; 104 return ret;
|
---|
| 61 | mov eax,[esp+04h]; @CBE9
|
---|
| 62 |
|
---|
| 63 | ; 103 struct ret12bytes ret = {1,2,3};
|
---|
| 64 | mov dword ptr [esp-0ch],01h; ret
|
---|
| 65 | mov dword ptr [esp-08h],02h; ret
|
---|
| 66 |
|
---|
| 67 | ; 104 return ret;
|
---|
| 68 | mov edx,[esp-0ch]; ret
|
---|
| 69 | mov ecx,[esp-08h]; ret
|
---|
| 70 | mov [eax],edx
|
---|
| 71 |
|
---|
| 72 | ; 103 struct ret12bytes ret = {1,2,3};
|
---|
| 73 | mov dword ptr [esp-04h],03h; ret
|
---|
| 74 |
|
---|
| 75 | ; 104 return ret;
|
---|
| 76 | mov [eax+04h],ecx
|
---|
| 77 | mov ecx,[esp-04h]; ret
|
---|
| 78 | mov [eax+08h],ecx
|
---|
| 79 | ret 04h
|
---|
| 80 | _asmfoostd12@0 endp
|
---|
| 81 |
|
---|
| 82 | ; 95 struct ret8bytes __stdcall asmfoostd8(void)
|
---|
| 83 | align 010h
|
---|
| 84 |
|
---|
| 85 | public _asmfoostd8@0
|
---|
| 86 | _asmfoostd8@0 proc
|
---|
| 87 |
|
---|
| 88 | ; 97 struct ret8bytes ret = {1,2};
|
---|
| 89 | mov dword ptr [esp-08h],01h; ret
|
---|
| 90 | mov dword ptr [esp-04h],02h; ret
|
---|
| 91 |
|
---|
| 92 | ; 98 return ret;
|
---|
| 93 | mov eax,[esp-08h]; ret
|
---|
| 94 | mov edx,[esp-04h]; ret
|
---|
| 95 | ret
|
---|
| 96 | _asmfoostd8@0 endp
|
---|
| 97 |
|
---|
| 98 | ; 89 struct ret4bytes __stdcall asmfoostd4(void)
|
---|
| 99 | align 010h
|
---|
| 100 |
|
---|
| 101 | public _asmfoostd4@0
|
---|
| 102 | _asmfoostd4@0 proc
|
---|
| 103 |
|
---|
| 104 | ; 91 struct ret4bytes ret = {1};
|
---|
| 105 | mov dword ptr [esp-04h],01h; ret
|
---|
| 106 |
|
---|
| 107 | ; 92 return ret;
|
---|
| 108 | mov eax,[esp-04h]; ret
|
---|
| 109 | ret
|
---|
| 110 | _asmfoostd4@0 endp
|
---|
| 111 |
|
---|
| 112 | ; 81 struct ret16bytes _Optlink asmfooopt16(void)
|
---|
| 113 | align 010h
|
---|
| 114 |
|
---|
| 115 | public asmfooopt16
|
---|
| 116 | asmfooopt16 proc
|
---|
| 117 | push ebp
|
---|
| 118 | mov ebp,esp
|
---|
| 119 |
|
---|
| 120 | ; 84 return ret;
|
---|
| 121 | mov eax,[ebp+08h]; @CBE8
|
---|
| 122 |
|
---|
| 123 | ; 83 struct ret16bytes ret = {1,2,3,4};
|
---|
| 124 | mov dword ptr [ebp-010h],01h; ret
|
---|
| 125 | mov dword ptr [ebp-0ch],02h; ret
|
---|
| 126 |
|
---|
| 127 | ; 84 return ret;
|
---|
| 128 | mov ecx,[ebp-010h]; ret
|
---|
| 129 | mov edx,[ebp-0ch]; ret
|
---|
| 130 | mov [eax],ecx
|
---|
| 131 |
|
---|
| 132 | ; 83 struct ret16bytes ret = {1,2,3,4};
|
---|
| 133 | mov dword ptr [ebp-08h],03h; ret
|
---|
| 134 |
|
---|
| 135 | ; 84 return ret;
|
---|
| 136 | mov [eax+04h],edx
|
---|
| 137 | mov edx,[ebp-08h]; ret
|
---|
| 138 |
|
---|
| 139 | ; 83 struct ret16bytes ret = {1,2,3,4};
|
---|
| 140 | mov dword ptr [ebp-04h],04h; ret
|
---|
| 141 |
|
---|
| 142 | ; 84 return ret;
|
---|
| 143 | mov ecx,[ebp-04h]; ret
|
---|
| 144 | mov [eax+08h],edx
|
---|
| 145 | mov [eax+0ch],ecx
|
---|
| 146 | pop ebp
|
---|
| 147 | ret
|
---|
| 148 | asmfooopt16 endp
|
---|
| 149 |
|
---|
| 150 | ; 75 struct ret12bytes _Optlink asmfooopt12(void)
|
---|
| 151 | align 010h
|
---|
| 152 |
|
---|
| 153 | public asmfooopt12
|
---|
| 154 | asmfooopt12 proc
|
---|
| 155 |
|
---|
| 156 | ; 78 return ret;
|
---|
| 157 | mov eax,[esp+04h]; @CBE7
|
---|
| 158 |
|
---|
| 159 | ; 77 struct ret12bytes ret = {1,2,3};
|
---|
| 160 | mov dword ptr [esp-0ch],01h; ret
|
---|
| 161 | mov dword ptr [esp-08h],02h; ret
|
---|
| 162 |
|
---|
| 163 | ; 78 return ret;
|
---|
| 164 | mov edx,[esp-0ch]; ret
|
---|
| 165 | mov ecx,[esp-08h]; ret
|
---|
| 166 | mov [eax],edx
|
---|
| 167 |
|
---|
| 168 | ; 77 struct ret12bytes ret = {1,2,3};
|
---|
| 169 | mov dword ptr [esp-04h],03h; ret
|
---|
| 170 |
|
---|
| 171 | ; 78 return ret;
|
---|
| 172 | mov [eax+04h],ecx
|
---|
| 173 | mov ecx,[esp-04h]; ret
|
---|
| 174 | mov [eax+08h],ecx
|
---|
| 175 | ret
|
---|
| 176 | asmfooopt12 endp
|
---|
| 177 |
|
---|
| 178 | ; 69 struct ret8bytes _Optlink asmfooopt8(void)
|
---|
| 179 | align 010h
|
---|
| 180 |
|
---|
| 181 | public asmfooopt8
|
---|
| 182 | asmfooopt8 proc
|
---|
| 183 |
|
---|
| 184 | ; 72 return ret;
|
---|
| 185 | mov eax,[esp+04h]; @CBE6
|
---|
| 186 |
|
---|
| 187 | ; 71 struct ret8bytes ret = {1,2};
|
---|
| 188 | mov dword ptr [esp-08h],01h; ret
|
---|
| 189 | mov dword ptr [esp-04h],02h; ret
|
---|
| 190 |
|
---|
| 191 | ; 72 return ret;
|
---|
| 192 | mov edx,[esp-08h]; ret
|
---|
| 193 | mov ecx,[esp-04h]; ret
|
---|
| 194 | mov [eax],edx
|
---|
| 195 | mov [eax+04h],ecx
|
---|
| 196 | ret
|
---|
| 197 | asmfooopt8 endp
|
---|
| 198 |
|
---|
| 199 | ; 63 struct ret4bytes _Optlink asmfooopt4(void)
|
---|
| 200 | align 010h
|
---|
| 201 |
|
---|
| 202 | public asmfooopt4
|
---|
| 203 | asmfooopt4 proc
|
---|
| 204 |
|
---|
| 205 | ; 66 return ret;
|
---|
| 206 | mov eax,[esp+04h]; @CBE5
|
---|
| 207 |
|
---|
| 208 | ; 65 struct ret4bytes ret = {1};
|
---|
| 209 | mov dword ptr [esp-04h],01h; ret
|
---|
| 210 |
|
---|
| 211 | ; 66 return ret;
|
---|
| 212 | mov ecx,[esp-04h]; ret
|
---|
| 213 | mov [eax],ecx
|
---|
| 214 | ret
|
---|
| 215 | asmfooopt4 endp
|
---|
| 216 |
|
---|
| 217 | ; 56 struct ret16bytes _System asmfoosys16(void)
|
---|
| 218 | align 010h
|
---|
| 219 |
|
---|
| 220 | public asmfoosys16
|
---|
| 221 | asmfoosys16 proc
|
---|
| 222 | push ebp
|
---|
| 223 | mov ebp,esp
|
---|
| 224 |
|
---|
| 225 | ; 59 return ret;
|
---|
[672] | 226 | mov eax,[ebp+08h]; @CBE4
|
---|
| 227 |
|
---|
[675] | 228 | ; 58 struct ret16bytes ret = {1,2,3,4};
|
---|
[672] | 229 | mov dword ptr [ebp-010h],01h; ret
|
---|
| 230 | mov dword ptr [ebp-0ch],02h; ret
|
---|
| 231 |
|
---|
[675] | 232 | ; 59 return ret;
|
---|
[672] | 233 | mov ecx,[ebp-010h]; ret
|
---|
| 234 | mov edx,[ebp-0ch]; ret
|
---|
| 235 | mov [eax],ecx
|
---|
| 236 |
|
---|
[675] | 237 | ; 58 struct ret16bytes ret = {1,2,3,4};
|
---|
[672] | 238 | mov dword ptr [ebp-08h],03h; ret
|
---|
| 239 |
|
---|
[675] | 240 | ; 59 return ret;
|
---|
[672] | 241 | mov [eax+04h],edx
|
---|
| 242 | mov edx,[ebp-08h]; ret
|
---|
| 243 |
|
---|
[675] | 244 | ; 58 struct ret16bytes ret = {1,2,3,4};
|
---|
[672] | 245 | mov dword ptr [ebp-04h],04h; ret
|
---|
| 246 |
|
---|
[675] | 247 | ; 59 return ret;
|
---|
[672] | 248 | mov ecx,[ebp-04h]; ret
|
---|
| 249 | mov [eax+08h],edx
|
---|
| 250 | mov [eax+0ch],ecx
|
---|
| 251 | pop ebp
|
---|
| 252 | ret
|
---|
[675] | 253 | asmfoosys16 endp
|
---|
[672] | 254 |
|
---|
[675] | 255 | ; 50 struct ret12bytes _System asmfoosys12(void)
|
---|
[672] | 256 | align 010h
|
---|
| 257 |
|
---|
[675] | 258 | public asmfoosys12
|
---|
| 259 | asmfoosys12 proc
|
---|
[672] | 260 |
|
---|
[675] | 261 | ; 53 return ret;
|
---|
[672] | 262 | mov eax,[esp+04h]; @CBE3
|
---|
| 263 |
|
---|
[675] | 264 | ; 52 struct ret12bytes ret = {1,2,3};
|
---|
[672] | 265 | mov dword ptr [esp-0ch],01h; ret
|
---|
| 266 | mov dword ptr [esp-08h],02h; ret
|
---|
| 267 |
|
---|
[675] | 268 | ; 53 return ret;
|
---|
[672] | 269 | mov edx,[esp-0ch]; ret
|
---|
| 270 | mov ecx,[esp-08h]; ret
|
---|
| 271 | mov [eax],edx
|
---|
| 272 |
|
---|
[675] | 273 | ; 52 struct ret12bytes ret = {1,2,3};
|
---|
[672] | 274 | mov dword ptr [esp-04h],03h; ret
|
---|
| 275 |
|
---|
[675] | 276 | ; 53 return ret;
|
---|
[672] | 277 | mov [eax+04h],ecx
|
---|
| 278 | mov ecx,[esp-04h]; ret
|
---|
| 279 | mov [eax+08h],ecx
|
---|
| 280 | ret
|
---|
[675] | 281 | asmfoosys12 endp
|
---|
[672] | 282 |
|
---|
[675] | 283 | ; 44 struct ret8bytes _System asmfoosys8(void)
|
---|
[672] | 284 | align 010h
|
---|
| 285 |
|
---|
[675] | 286 | public asmfoosys8
|
---|
| 287 | asmfoosys8 proc
|
---|
[672] | 288 |
|
---|
[675] | 289 | ; 47 return ret;
|
---|
[672] | 290 | mov eax,[esp+04h]; @CBE2
|
---|
| 291 |
|
---|
[675] | 292 | ; 46 struct ret8bytes ret = {1,2};
|
---|
[672] | 293 | mov dword ptr [esp-08h],01h; ret
|
---|
| 294 | mov dword ptr [esp-04h],02h; ret
|
---|
| 295 |
|
---|
[675] | 296 | ; 47 return ret;
|
---|
[672] | 297 | mov edx,[esp-08h]; ret
|
---|
| 298 | mov ecx,[esp-04h]; ret
|
---|
| 299 | mov [eax],edx
|
---|
| 300 | mov [eax+04h],ecx
|
---|
| 301 | ret
|
---|
[675] | 302 | asmfoosys8 endp
|
---|
[672] | 303 |
|
---|
[675] | 304 | ; 38 struct ret4bytes _System asmfoosys4(void)
|
---|
[672] | 305 | align 010h
|
---|
| 306 |
|
---|
[675] | 307 | public asmfoosys4
|
---|
| 308 | asmfoosys4 proc
|
---|
[672] | 309 |
|
---|
[675] | 310 | ; 41 return ret;
|
---|
[672] | 311 | mov eax,[esp+04h]; @CBE1
|
---|
| 312 |
|
---|
[675] | 313 | ; 40 struct ret4bytes ret = {1};
|
---|
[672] | 314 | mov dword ptr [esp-04h],01h; ret
|
---|
| 315 |
|
---|
[675] | 316 | ; 41 return ret;
|
---|
[672] | 317 | mov ecx,[esp-04h]; ret
|
---|
| 318 | mov [eax],ecx
|
---|
| 319 | ret
|
---|
[675] | 320 | asmfoosys4 endp
|
---|
| 321 |
|
---|
| 322 |
|
---|
| 323 |
|
---|
| 324 |
|
---|
| 325 | public _asmfoodef4_gcc
|
---|
| 326 | _asmfoodef4_gcc:
|
---|
| 327 | mov eax, 1
|
---|
| 328 | ret
|
---|
| 329 |
|
---|
| 330 | public _asmfoodef8_gcc
|
---|
| 331 | _asmfoodef8_gcc:
|
---|
| 332 | mov eax, 1
|
---|
| 333 | mov edx, 2
|
---|
| 334 | ret
|
---|
| 335 |
|
---|
| 336 | public _asmfoodef12_gcc
|
---|
| 337 | _asmfoodef12_gcc:
|
---|
| 338 | push ebp
|
---|
| 339 | mov ebp, esp
|
---|
| 340 | sub esp, 24
|
---|
| 341 | mov eax, [ebp + 8]
|
---|
| 342 | mov dword ptr [eax + 0], 1
|
---|
| 343 | mov dword ptr [eax + 4], 2
|
---|
| 344 | mov dword ptr [eax + 8], 3
|
---|
| 345 | leave
|
---|
| 346 | ret 4
|
---|
| 347 |
|
---|
| 348 | public _asmfoodef16_gcc
|
---|
| 349 | _asmfoodef16_gcc:
|
---|
| 350 | push ebp
|
---|
| 351 | mov ebp, esp
|
---|
| 352 | sub esp, 24
|
---|
| 353 | mov eax, [ebp + 8]
|
---|
| 354 | mov dword ptr [eax + 0], 1
|
---|
| 355 | mov dword ptr [eax + 4], 2
|
---|
| 356 | mov dword ptr [eax + 8], 3
|
---|
| 357 | mov dword ptr [eax +12], 4
|
---|
| 358 | leave
|
---|
| 359 | ret 4
|
---|
| 360 |
|
---|
[672] | 361 | CODE32 ends
|
---|
| 362 | end
|
---|