hello.s - Takeoka

Sheet1
1
2
3 .globl main
4
5 main:
6
7
8
9
10
11
12
13
14
.file
.text
hello.c
.type
main, @function
pushl
movl
andl
subl
movl
movl
movl
call
movl
%ebp
%esp, %ebp
$-16, %esp
$16, %esp
$0, 8(%esp)
$0, 4(%esp)
$main.omp_fn.0, (%esp)
GOMP_parallel_start
OpenMPのスレッドを生成
$0, (%esp)
15
call
main.omp_fn.0
16
17
18
19
20
21 .LC0:
22
23
24
25 main.omp_fn.0:
26
27
28
29
call
leave
ret
.size
.section
GOMP_parallel_end
.string
.text
.type
“hello world from %d of %d\n”
pushl
movl
pushl
subl
%ebp
%esp, %ebp
%ebx
$20, %esp
30
31
call
movl
omp_get_num_threads
%eax, %ebx
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
call
movl
movl
movl
movl
call
addl
popl
popl
ret
.size
.ident
.section
omp_get_thread_num
$.LC0, %edx
%ebx, 8(%esp)
%eax, 4(%esp)
%edx, (%esp)
printf
$20, %esp
%ebx
%ebp
#pragmaで指定したブロックが
、関数として独立させられている
OpenMPが生成した全スレッド
がjoinして一つに
main, .-main
.rodata
main.omp_fn.0, @function
get_num_threads()の呼び出
し。現在の総スレッ数ドが返る
get_thread_num()の呼び出し
。自スレッドの番号が返る
main.omp_fn.0, .-main.omp_fn.0
GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
.note.GNU-stack,"",@progbits
ページ 1