C tut weh!

Am 10.10.2019 um 12:42 schrieb Wolfgang Allinger:

[...]

Und nun zum Vergleich:

double det = p*p/4.0 - q; if (det >= 0.0) { double sol1 = -p/2 - sqrt(det); double sol2 = -p/2 + sqrt(det); printf("solutions = %f, %f\n", sol1, sol2); } else { printf("no solution\n"); }

Logikaufgaben jedweder Art oder den Sprung an den Resetvektor? Wieviele Befehle sind eine Rechenaufgabe in Z80-Assembler? Wie lesbar ist die Rechenaufgabe in Forth? Wieviel Transistoren braucht die Rechenaufgabe als HW-Schaltung?

Stefan

Reply to
Stefan Reuther
Loading thread data ...

rungsfeld

Mal abgesehen davon: Was sollte beim Z80 nicht richtig sein?

MfG hjs

Reply to
Hans-Juergen Schneider

Am 10.10.19 um 12:42 schrieb Wolfgang Allinger:

RST 0 ist ja wohl nur 1 Byte und nicht 2 Befehle.

Selbst JP 0000 ist nur 1 Befehl.

/Gerhard

Reply to
Gerhard Hoffmann

Ja, aber drei Bytes. Das geht an die Substanz. Wenn ich wissen will, ob das Programm von einem normal denkenden Menschen geschrieben ist, dann durchsuche ich den Hexcode nach '3e 00' und 'fe 00'.

MfG hjs

Reply to
Hans-Juergen Schneider

Hmmm ich verstehe deine Frage nicht ganz, ich glaube wir reden aneinander vorbei.

Ich nehme an, es ist Konsens, dass es gut und sogar notwendig ist, in

Hardwaredetail exponieren sollte oder nicht. C macht das, andere Programmiersprachen nicht. Beides ist okay.

in Z80-Assembler (oder jedem beliebigen nicht-esoterischen ASM-Dialekt)

Johannes

--

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

in einer freestanding_implementation wirkt.

An integer may be converted to any pointer type. Except as previously specified, the result is implementation-defined, might not be correctly aligned, might not point to an entity of the referenced type, and might be a trap representation.67)

Undefiniertes Verhalten erlaubt sogar ein Verhalten, das so erscheint, als sei es definiertes Verhalten. Der Standard hat es halt nicht definiert - aber die Implementation.

Eben.

Das kann so nicht gesagt werden!

Aber alles Sonstige nicht.

--

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

Bei VLA wird zur Laufzeit berechnet. Der letzte Satz stimmt.

--

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

--

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

Die 0 ist hier aber ein Spezialfall, da (void*)0 eben die null pointer

"An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant."

Naja, der C-Standard differenziert schon genau zwischen undefined behavior und implementation-defined behavior. Und einen NULL-pointer zu dereferenzieren ist ersteres.

Aber klar, letztlich wird es zu Code compiliert und der wird in aller Regel konsistent irgendwas tun. Nur was, das ist halt nicht definiert und der C-Standard erlaubt prinzipiell alles: Abort z.B..

Hmja, da war ich nicht klar genug in meiner Aussage. Was ich meinte war

"The value of the result is implementation-defined, and its type (an unsigned integer type) is size_t".

"If the type of the operand is a variable length array type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an integer constant."

Johannes

--

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

¤tsverzerrungsfeld

MfG hjs

Reply to
Hans-Juergen Schneider

einen andern Controller portiert, dessen Reset-Adresse nicht 0 ist...

ganz so einfach, aber da ist dann gleich das ganze Bein weg ;-)

...

Was? Sprung nach NULL, Reset-Simulation, auf welcher Plattform?

Da ist der Prozessor ja bekannt ;-)

Falk

--
Microsoft ist aus einer Kooperation der Borg und der Ferengi 
entstanden. 
Leider arbeiten die Ferengi in der Entwicklungsabteilung und die Borg im 
Marketing
Reply to
Falk Willberg

UB nennt, definieren, also das UB des Standards entfernen.

Beispielsweise darf der Ausdruck ((void*)0) jeden beliebigen Wert haben (im Adressenkontext). Der REALE Nullpointer darf folglich z.B. den Wert 0xCB haben.

--

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

ja es ist ein Sprung an die Adresse 0. Ist bei vielen CPUs der RESET Vektor. (8080 ... Z80... etc.)

Also in FORTH:

0 EXECUTE

In Z80: LD HL,0 JP (HL)

Ja ich weiss, dass auch ein JP 0 geht, entspricht eben einem GOTO 0, bzw. RST 0 geht auch. Aber die machen nicht exact das gleiche, wie der C- Konstrukt.

k.a. ob C GOTO hat, vermutlich nicht, denn obiger C-Konstrukt stammt aus

keine DummenFa)

BTW Dumm: unser (vor)lauter Dummbatz Johannes Bauer auf dem Mt. Stupid(1) rumkrakelend, sollte sich noch hinter die Ohren schreiben, dass man in jedem uC nach dem Reset alle HW Register auf den gleichen Stand wie nach einem echten RESET setzt. Besonders auch die undefinierten

alle externen Signale immer in der gleichen Reihenfolge hochkommen und keine lustige Spikes irgendeinen externen Baustein durcheinanderbringen.

BTW2 taugen in fast allen uC die HW Reset nichts, daher hab ich IMMER einen externen RST Baustein in meinen Entwicklungen eingebaut, nachdem ich es auf die harte Tour lernen musste. IIRC wars ein 80531 und auch der

BTW3 der eine oder andere uC macht auch beim runtertorkeln der Spannung noch lustige Dinge. 8031 schreiben dabei noch gerne Murks in ein externes Flash, meist an die Adresse 0 bzw. Block 0. Auch das verhindert eine ext. RST Baustein, der die RST Leitung auf GND zieht.

Ich weiss nicht, ob die internen RST besser geworden sind, da ich das nicht mehr ausprobueren wollte. s.o. IMMER ext. RST Baustein.

Ich weiss nicht mehr, welchen Baustein ich genommen habe. Habe alle AKten vor der Auswanderung verkauft.

Ich hab keine Lust, auf meiner uralt Plattensammlung noch was zu suchen,

IIRC war das irgend ein 3pin SMD aus der Schweiz. Funzte auch einwandfrei bei Schleichspannungsbetrieb :)

(1) Gruss von Dunning-Kruger

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

Falk Willberg schrieb:

Controller programmiert, dann gibt es notwendigerweise Controller-spezififischen Code, der so nicht auf anderen Controllern

Librarys zu verpacken und ein sauberes Interface zu definieren. Im spezifischen Code darf dann auch nicht portabel programmiert werden.

- Heinz

Reply to
Heinz Saathoff

Musst du dich denn wirklich jedes Mal zum Brot machen indem du deutlich machst, dass deine Mikrocontroller-Kenntnisse auf dem Stand von Anno

1980 stehen geblieben sind?

Auf deinen Spielzeugcontrollerchen und trivialen Demoapplikationen mag das so gehen. Die verzeihen dir ja sogar deinen grotesken Codepfusch und die Raceconditions. Meistens geht das schon gut, da ist noch nie was passiert, gell.

ordentlich initialisiert werden, sonst ist die Hardware Murks. Ganz abgesehen davon, dass es Register gibt, die sich nur in eine Richtung

zu verbiegen, nachdem sie einmal gesetzt wurden. Vermutlich hast du mit

Lass es doch einfach sein, Wolfgang. Es ist einfach nur peinlich was du

Immer gern, Dein Johannes

--

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

Am 10.10.2019 um 19:28 schrieb Hans-Juergen Schneider:

Um es genau solchen Reverse Engineering Leuten schwer zu machen, sollte jeder halbwegs clevere Programmierer mit wechselnden Sprungtechniken arbeiten und ausnutzen, was die Trickkiste so hergibt. :-D

W.

Reply to
Wolf gang P u f f e

"Stefan Reuther" schrieb im Newsbeitrag news: snipped-for-privacy@stefan.msgid.phost.de...

Wenn eine Programmiersprache etwas nicht bietet was man braucht,

Tages in einer Sackgasse steht aus der es kein heraus gibt ?

vielen anderen erprobt wurde, sich also i der Praxis bewiesen hat.

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

Am 11.10.2019 um 11:34 schrieb MaWin:

Faustkeile!

Reply to
Uhu

[...]

Auch bei aktuellen uC funktioniert nicht immer alles makellos.

Der interne war eben nicht ganz einwandfrei.

--

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

Komponente, die alles noch irgendwie retten soll, wenn in dem Rest Murks

Wenn ich mich nicht darauf verlassen kann, was mir im Datenblatt garantiert wird (z.B. eben definierte Werte der Peripherie-Register und dessen Zustand) dann habe ich da vermutlich noch ganz andere Probleme.

Es ist trotzdem schlicht auf einem modernen System unrealistisch,

Reset-Vektor springen kann, wie man will und mag -- nur halt wegen fehlender Berechtigungen das System nicht resetten darf. Zum anderen, weil da im Hintergrund, parallel, dann z.B. noch irgendwo ein DMA wild rumwurstelt oder der Interrupt-Controller "undefiniertet" konfiguriert ist.

Das macht echt einfach keinen Sinn und ist genau der Grund, wieso man

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.