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?
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'.
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
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.
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
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
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
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.
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
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.
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.