-
Data: 2019-02-16 23:26:28
Temat: Re: Zagwozdka w C Keil - wyjaśnienie.
Od: q...@t...no1 (Queequeg) szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]J.F. <j...@p...onet.pl> wrote:
> W sumie poprawnie - jeszcze nie wie ktore funkcje beda uzyte, to musi
> skompilowac poprawnie.
> Ale trzeba bylo sprawdzic ze static.
Sprawdziłem, nie ma różnicy w wygenerowanym kodzie.
Diff:
#v+
--- test-no-static.s 2019-02-16 23:19:27.993290080 +0100
+++ test-static.s 2019-02-16 23:19:20.653290321 +0100
@@ -29,7 +29,7 @@
.L6:
.align 2
.L5:
- .word i
+ .word .LANCHOR0
.size fn1, .-fn1
.align 2
.global fn2
@@ -45,8 +45,14 @@
.L9:
.align 2
.L8:
- .word i
+ .word .LANCHOR0
.size fn2, .-fn2
- .comm i,4,4
+ .bss
+ .align 2
+.LANCHOR0 = . + 0
+ .type i, %object
+ .size i, 4
+i:
+ .space 4
.ident "GCC: (Raspbian 4.9.2-10) 4.9.2"
.section .note.GNU-stack,"",%progbits
#v-
> A potem ...
>
> static void fn2(void) { i = 40; }
>
> i jej nie wywolywac.
Tak, to zmienia postać rzeczy.
Z samym `int i;` fn1 wygląda wtedy:
#v+
ldr r3, .L5
ldr r3, [r3]
.L2:
cmp r3, #42
bne .L2
#v-
A ze statycznym:
#v+
.L2:
b .L2
#v-
> static void fn2(void) { i = 40; }
>
> main()
> {
> fn() ;
> fn2();
> }
Tak... to zrobił ciekawie.
Jeśli main jest niestatyczne, to wygenerował ciało fn1() a jeśli jest
statyczne, to zamienił na nieskończoną pętlę.
> No i ciekawe, na ile dobrze zoptymalizuje :-)
Nie wiem czemu to:
#v+
static int i;
void fn1(void) { while (i != 42) ; }
static void fn2(void) { i = 40; }
void fn3(void) { fn1(); fn2(); }
#v-
spowodowało wygenerowanie ciała fn1:
#v+
ldr r3, .L5
ldr r3, [r3]
.L2:
cmp r3, #42
bne .L2
#v-
--
Eksperymentalnie: http://facebook.com/groups/pl.misc.elektronika
Następne wpisy z tego wątku
- 17.02.19 03:55 k...@g...com
- 17.02.19 09:16 Mateusz Viste
- 17.02.19 11:57 J.F.
- 19.02.19 13:14 Queequeg
Najnowsze wątki z tej grupy
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
Najnowsze wątki
- 2025-07-14 granice
- 2025-07-14 Awaria VM?
- 2025-07-14 Gdańsk => Programista Kotlin <=
- 2025-07-14 Warszawa => Junior Rekruter <=
- 2025-07-14 Warszawa => Specjalista rekrutacji IT <=
- 2025-07-14 Wkłady do zniczy...
- 2025-07-14 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-07-14 Re: PO chroniło i chroni policyjnych bandziorów [zawiasy za katowanie obywatela (Poznań czerwiec 2012)]
- 2025-07-14 Warszawa => International Freight Forwarder <=
- 2025-07-14 Warszawa => Recruiter 360 <=
- 2025-07-14 Re: Rz?Âd ZAKAZUJE magazyn?Â?w energii ?!! Nowe prawo od 14 lipca to SZOK! ??Â
- 2025-07-14 Warszawa => Sales Assistant <=
- 2025-07-13 Fałszywe alerty
- 2025-07-12 dlaczego gadacie z tym debilem
- 2025-07-13 Unia Europejska przygotowuje nowy podatek