C tut weh!

C_hurts sounds in German like: Tooths hurts ( C_tut_weh :)

So here is the pain: Hier ist der Schmerz:

(*(void(*)())0)()

Ich weiss was es macht :) Wissen die C-progger das auch? Sogar sinnvoll auf vielen CPUs.

Hint: In Forth 2 Worte (auch interaktiv) und in Z80 Assembler 2 Befehle. Beides schon oft gebraucht :p

Auch oft gebraucht :)

Nun auf, ich warte :o

Wolfgang

--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
(lt. alter usenet Weisheit)      iPod, iPhone, iPad, iTunes, iRak, iDiot
Reply to
Wolfgang Allinger
Loading thread data ...

Hi,

ich habe zwar schon eine ganze Weile kein C mehr geschrieben

Also sozusagen ein Reboot "auf manchen Maschinen"?

Ronald

Reply to
Ronald Pfeiffer

er aber vermutlich nicht, weil er halt kein C kann.

Undefiniertes Verhalten. Alles kann, nichts muss.

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

Am 10.10.2019 um 12:42 schrieb Wolfgang Allinger:

^^^^^^ Das Word gibt es IMHO nicht.

tooth: der Zahn. Mehrzahl: teeth

Reply to
Werner Flügel

Dein Zeh ist also auf Englisch der "tooth", ja? Du kannst also nicht nur kein C, sondern auch kein Englisch.

[...]> Hint:

Argument gegen C, dass du dir da rausgesucht hast, merkste selber, oder?

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

Am 10.10.2019 um 12:42 schrieb Wolfgang Allinger: > C_hurts sounds in German like: Tooths hurts ( C_tut_weh :)

Meinst Du nicht toe hurts?

Error: expected a ";"

Wozu sind Compilerfehler sinnvoll?

Falls Du den Sprung an Adresse 0 meinst, der ist nur sinnvoll wenn das Programm dort beginnt.

Reply to
Thorsten Böttcher

"Wolfgang Allinger" schrieb im Newsbeitrag news:EvbIW$ snipped-for-privacy@allinger-307049.user.uni-berlin...

und ich habe es auch schon benutzt um RESET und andere

--
MaWin, Manfred Winterhoff, mawin at gmx dot net 
Homepage http://flexiblebird.bplaced.net/ 
dse-FAQ: http://dse-faq.elektronik-kompendium.de/
Reply to
MaWin

Hm ich kenne nicht viele CPUs, bei dem ein Sprung an 0 auch direkt die ganze Peripherie resettet. Ohne den ist ein "Soft-Reset" bei vielen SoCs extrem witzlos, wenn alles was nicht gerade der Kern ist in einem

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

Johannes Bauer schrieb:

Es wird IMO nicht kritisiert, dass man die Adresse 0 aufrufen kann,

hier zu erkennen glaubst.

man keinen typedef nimmt:

void (*signal(int signum, void (*handler)(int)))(int);

Mit typedef siehts dann wieder lesbarer aus:

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

- Heinz

Reply to
Heinz Saathoff

quasi eine rein numerische Adresse zu einem Funktionszeiger casten) -- aber aus Sicherheitsaspekten ist es halt schon eher schlecht, dass die

Hmja, habe ich jetzt auch keine Probleme damit, aber ist vermutlich geschmackssache bzw die Frage, wie oft man sowas schon gesehen hat.

Das ist ja geradezu einfach :)

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

Nein, die Konstruktion wird oft sinnvoll angewandt.

(* (void(*)())0 )()

Die Konstante 0 wird gecastet in einen Funktionspointer auf eine Funktion, die nichts retourniert. Dann wird dieser Funktionspointer explizit dereferenziert und die Funktion mit Adresse 0 aufgerufen.

# define NEsp0ARR(S,A) (sizeof(((S*)0)->A)/sizeof(*((S*)0)->A))

--

Helmut Schellong   var@schellong.biz 
www.schellong.de   www.schellong.com   www.schellong.biz 
http://www.schellong.de/c.htm
Reply to
Helmut Schellong

Doch, und zwar KRISTALL klar:

"If an invalid value has been assigned to the pointer, the behavior of the unary * operator is undefined."

"Among the invalid values for dereferencing a pointer by the unary * operator are a null pointer, [...]"

dereferenzieren ist definitiv undefiniertes Verhalten.

Schon klar.

Das Dereferenzieren ist undefiniertes Verhalten, auch wenn es

reinsteckt.

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

Johannes Bauer schrieb:

es in Forth aussieht.

ljmp 0

In hosted Umgebungen (Unix, Windows ...) sehe ich auch kaum Anwendung

Ich arbeite z.Z mit den XMC Controllern von Infineon und die haben Routinen auf dokumentierten Adressen im ROM, die vom Programmiere

Funktionspointer sinnvoll.

- Heinz

Reply to
Heinz Saathoff

Johannes Bauer schrieb:

Wobei sizeof vom Compiler ausgewertet wird und nicht zur Laufzeit. Deshalb wird da auch nichts wirklich dereferenziert.

- Heinz

Reply to
Heinz Saathoff

oder so) in C geschrieben, um den ganzen bloatigen Overhead zu umgehen, der durch einen X-Server/Webbrowser/wie auch immer zu Stande kommt.

Aber klar, wenn Performance und Language-Bindings keine Rolle spielen, nehme ich auch viel lieber Python.

Ahja, richtig. Hatte ich auch mal bei Stellaris Cortex-M3s, die hatten safeRTOS im ROM und da war das genauso. Sehr praktische Sache.

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

MfG hjs

Reply to
Hans-Juergen Schneider

O nicht.

IMO meint er eher wC, oder ganz schlimm Wc.

DoDi

Reply to
Hans-Peter Diettrich

Am 10.10.2019 um 14:40 schrieb Helmut Schellong:

Geht das nicht einfacher mit goto 0; ???

DoDi

Reply to
Hans-Peter Diettrich

Wenn schon, dann "goto *0;". Aber zum einen ist ein goto etwas anderes

anderen machst du damit ja Wolfgang's Narrativ kaputt, darf also nicht sein.

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

die Birne vernebelt.

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.