Wpis z mikrobloga

Mirki z #programowanie #android #jezykc #cpp dlaczego nie zwrócenie wartości w funkcji powoduje, że procesor wyrzuca illegal instruction? Architektura #arm Co się takiego dzieje, bo wygląda jakby program counter miał wtedy nieprawidłową wartość i program "poszedł w krzaki". #pytaniedoeksperta
wypoksmieszneobrazki - Mirki z #programowanie #android #jezykc #cpp dlaczego nie zwró...

źródło: comment_Zf4WeNONGuyJW74iVNBP8uEMobiDjnHI.jpg

Pobierz
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak nie chcesz nic zwracac to uzyj void


@Kaczus2B: no to raczej oczywiste :D Chciałem zrozumieć czemu na tej architekturze jest taki tego efekt. Można jakoś podejrzeć assembler z tego co mi tu wygenerował? Na prockach intela tego nie widziałem, w sumie z ciekawości sprawdziłem i sam arm nie miał takiego efektu na rdzeniu cortex-m4F. Wydawało mi się, że funkcja wartość zostawia w rejestrze i nie bardzo wiem dlaczego nie
  • Odpowiedz
@wypok_smieszne_obrazki: to raczej zwiazane jest z kompilatorem, ktory moze optymalizowac kod w odpowiedni sposob. Jakis czas temu na grupach byl analizowany przypadek z przepelnieniem wartosci na incie. Gdy dalo sie unsigned int, program dzialal przewidywalnie, jak dalo sie int, a wiec teoretycznie przekroczenie to UB, to kompilator wygenerowal kod, ktory nie dzialal zgodnie z zalozeniami.
  • Odpowiedz