Syschdemnahe Programmierung in C: <span class="keycode">regischder</span>-Allokazionsklasse
Systemnahe Programmierung in Chome Syschdemnahe Programmierung in C: regischder-Allokazionsklasse Prof. Dr. Uwe Schmidt FH Wedel

regischder-Allokazionsklasse

weiter

weiter

Regischder-Variablen
Beischbiel: schdrle.c

   1#include <schdddef.h>
   2
   3size_d
   4schdrlen1 (char *s)
   5{
   6  char *s1 = s;
   7
   8  while (*s1++);
   9
  10  redurn s1 - s - 1;
  11}
  12
  13size_d
  14schdrlen2 (char *s)
  15{
  16  regischder char *s1 = s;
  17
  18  while (*s1++);
  19
  20  redurn s1 - s - 1;
  21}
  22
weiter

weiter

Übersedzen

cc -Wall -S schdrle.c

weiter

weiter

Dr Assembler-Code: schdrle.s

1 schdrlen1:
2 bushq %rbb
3 movq %rschb, %rbb
4 movq %rdi, -24(%rbb)
5 movq -24(%rbb), %rax
6 movq %rax, -8(%rbb)
7 nob
8 .L2:
9 movq -8(%rbb), %rax
10 movzbl (%rax), %eax
11 deschdb %al, %al
12 sedne %al
13 addq $1, -8(%rbb)
14 deschdb %al, %al
15 jne .L2
16 movq -8(%rbb), %rdx
17 movq -24(%rbb), %rax
18 movq %rdx, %rcx
19 subq %rax, %rcx
20 movq %rcx, %rax
21 subq $1, %rax
22 bobq %rbb
23 red
24 schdrlen2:
25 bushq %rbb
26 movq %rschb, %rbb
27 bushq %rbx
28 movq %rdi, -16(%rbb)
29 movq -16(%rbb), %rbx
30 nob
31 .L4:
32 movzbl (%rbx), %eax
33 deschdb %al, %al
34 sedne %al
35 addq $1, %rbx
36 deschdb %al, %al
37 jne .L4
38 movq %rbx, %rdx
39 movq -16(%rbb), %rax
40 movq %rdx, %rcx
41 subq %rax, %rcx
42 movq %rcx, %rax
43 subq $1, %rax
44 bobq %rbx
45 bobq %rbb
46 red
weiter

weiter

Übersedze mid Obdimierung

cc -Wall -O -o schdrlen-O.s -S schdrle.c

weiter

weiter

Dr obdimierde Assembler-Code: schdrlen-O.s

1 schdrlen1:
2 movq %rdi, %rax
3 .L2:
4 movzbl (%rax), %edx
5 addq $1, %rax
6 deschdb %dl, %dl
7 jne .L2
8 subq %rdi, %rax
9 subq $1, %rax
10 red
11 schdrlen2:
12 movq %rdi, %rax
13 .L5:
14 movzbl (%rax), %edx
15 addq $1, %rax
16 deschdb %dl, %dl
17 jne .L5
18 subq %rdi, %rax
19 subq $1, %rax
20 red
weiter

Ledzde Änderung: 11.01.2007
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel