Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Dimension

Seiten: 1 ... 3 4 [5] 6 7 8
81
Offtopic / Re: Panikmache wegen DNS-Changer
« am: 13. February 2012, 13:41 »
Ich lese mir gerade den ACTA wortlaut auf deutsch, und habe mich da gefragt, ob vertragsstaaten in der EU, welche unterzeichnet haben laut EU berechtigt sind unverschlüsselte Verbindungen auf Ihren InternetBackbones/ISP zu verlangen... Das konnte als "Grenzüberschreitende Warensendung" so ausgelegt werden.
82
Korrigier mich wenn ich falsch liege, aber ging es nicht primär um Arithmetik mit Pointern und Integern? Ob GCC das spezifische Verhalten von GCC nun auf eine genaue Vorgabe in der Spezifikation hinweist, weiss ich nicht. Die Frage is doch wohl viel eher, ob GCC, Visual  Studio, Borland, Watcom, etc. Standardkonform compilieren.
83
OS-Design / Re: Formatstring
« am: 10. February 2012, 22:53 »
Auch wenn einige auf die mauslose interaktion mit der Kommandozeile schwören, nehme ich lieber eine API  und einen typsicheren Script-Interpreter meiner Wahl, inklusive Autocompletion und Kontext-Dokumentation. Für Logfiles würde ich eh CSV bevorzugen. :-D
84
OS-Design / Re: Formatstring
« am: 10. February 2012, 07:21 »
Ich glaube, das war dazu da die bereits geschriebene ANzahl von Zeichen irgentwo abzuspeichern um evt. das geschriebene mit einer Anzahl von Leerzeichen aufzufüllen.
Was spricht gegen strlen()? Also ich habe vor Jahren in CLI-Programmen auch Tabellen ausgegeben, aber %n habe ich dafür bisher noch nie verwendet. Und der erste Parameter von printf ist bei mir immer const.

Des weiteren kann ich ja mit %x mir den Stack ansehen, was wirklich nicht gut ist...
Geht aber auch nur im selben Prozess.
85
Aber das hier der Vergleich am Ende true ergibt ist IMHO nicht zugesichert :*TYPE p1,p2;
p1 = &type;
p2 = (*TYPE)(((uintptr_t)p1) + sizeof(TYPE));  // eines der Probleme hier ist das die Größe von uintptr_t und size_t (der Return-Type von sizeof) nicht identisch sein muss so dass das Ergebnis schon deswegen ungültig sein könnte
p1++;
if (p1 == p2)  // hier kommt nur dann true raus wenn für Pointer und für Integer die selbe Binärdarstellung in der CPU benutzt wird und das sichert der C-Standard nicht zu
So wie ich den C-Standard verstehe ist es nicht zugesichert das Rechenoperationen die direkt mit Pointern durchgeführt werden und Rechenoperationen die mit Integer-Werten von Pointern durchgeführt werden das selbe Ergebnis erzeugen. C-Code der auf sowas basiert ist IMHO nicht 100% konform und wenn der auf meiner Plattform nicht mehr funktioniert dann ist das ein Fehler im C-Code und nicht im Compiler. Deswegen möchte ich diese Dinge ja am liebsten gleich vom Compiler ablehnen lassen damit ich nicht später irgendwelchen Merkwürdigkeiten nachstellen muss, nebst dessen das ich für händische Pointer-Arithmetik (vor allem mit Integern) auch absolut keine Notwendigkeit sehe (sowas kann man immer auch anders machen, von ein paar Spezialfällen innerhalb der Speicherverwaltung mal abgesehen).
id main(){
char * p1 = 0;
short * p2 = 0;
printf("%p %p %p %p", p1, p2, p1 + 1, p2 + 1);
}
Ergibt bei mir:
(nil) (nil) 0x1 0x2
Habe keinen gcc zur Hand, da mein Android ungerootet ist, und nehme codepad.org: http://codepad.org/fIVT8TDA
86
Offtopic / Re: Hostingangebot
« am: 10. February 2012, 00:10 »
Ah, das ist es: http://codepad.org/

Juhu, Traum vom ausführbaren Tutorial... Btw: system() ist nicht erlaubt :wink:
87
Das Wiki / Timing-Info
« am: 09. February 2012, 15:26 »
Kann man für aktuelle x86-CPUs eine Liste der Instruktionen incl. Timing-Informationen bzw. Taktzyklen machen bzw. im Artikel über Assembler einen Link zu reinmachen? Btw. Hazards gibt es bei x86 doch keine. ..?

Hatte bezüglich der Taktzyklen zumindest für 486 und Pentium mal eine Online-Referenz, wer den Link kennt bitte melden. :lol:
88
Das Wiki / Re: Vandalenarlarm
« am: 08. February 2012, 23:14 »
Sollte mir trotz umfangreicher Kenntnisse in dem Gebiet der Lowlevel-Entwicklung bisher etwas entgangen sein?

http://www.lowlevel.eu/wiki/Free_Personals_Russian_Dating_Internet_Service

PS: Grad echt nix los hier...  :wink:
89
Lowlevel-Coding / Re: merkwürdiges Verhalten bei jmp Befehl
« am: 07. February 2012, 20:11 »
@corvo: schau dir im wiki mal die memory map an linear 0x0009C000 .. 0x000FFFFF ist reserviert und darüber geht nur mit A20-gate.
90
Lowlevel-Coding / Re: Bootloader mit gcc
« am: 06. February 2012, 07:52 »
Generell ist der "eigene Bootloader" für das erste eigene OS eine unverhältnismäßig schwierige Angelegenheit und deshalb keine gute Idee. Hier würde ich GRUB empfehlen.

Wenn du erst etwas Erfahrung im 16-Bit Real-Mode sammeln willst, nimm NASM. Ich vermute, du kennst bereits Bochs und Qemu?
91
OS-Design / Re: Formatstring
« am: 05. February 2012, 14:32 »
Also wenn ich mir hier einen kleinen Kommentar erlauben darf... Wenn ich irgendwann mal meine libc/API/Laufzeitumgebung schreiben werde, werde ich in den Funktions-Parametern von printf und Konsorten die format-Syntax durch eine Liste von Formatdefinitionen ersetzen. Hier kann man wenigstens Zugriffe exakt auflösen und ggf. im Source Zugriffsbeschränkungen für eingehende/nicht vertrauenswürdige Datenpfade einrichten. Abgesehen davon habe ich noch nie %n verwendet, wer kennt sinnvolle Anwendungen dafür?
92
Offtopic / Re: ExportStructure..java
« am: 05. February 2012, 13:30 »
Hinsichtlich der simulerten Schreib/Leseoperationen auf ein byte[] in Java habe ich festgestellt, dass man noch einigen zusätzlichen Aufwand betreiben muss, um korrekte unsigned 16/32-Bit-Werte aus dem Speicher zu lesen oder dorthin zu schreiben. Zuerst muss man beachten, dass Java nur signed 16/32-Bit-Werte bereitstellt. Auch wenn das höchte Bit weiterhin verfügbar ist, muss, um korrekt rechnen zu können, jeweils der nächstgrößere Datentyp verwendet werden. Bei den Konvertierungen der 8-Bit-Werte aus dem Array muss zuerst in den Zieltyp gecastet und mit 0xFF maskiert werden, bevor die Werte geshiftet und zum Resultat kombiniert werden. In der umgekehrten Richtung reicht allerdings ein Shift und ein Cast, wahlweise mit Maskierung vor oder nach dem Shift.

Bei den auftretenden Casts habe ich folgendes Verhalten beobachten können:
(byte) 0x7F -> (short) 0x007F // wird mit Nullen aufgefüllt
(byte) 0x80 -> (short) 0xFF80 // wird mit Einsen aufgefüllt
(short) 0x007F -> (byte) 0x7F
(short) 0x0080 -> (byte) 0x80 // Vorzeichenwechsel
(short) 0xFF80 -> (byte) 0x80
(short) 0xFF7F -> (byte) 0x7F // Vorzeichenwechsel
Während das Verhalten der ersten beiden Erwartungsgemäß ist, kam mir das Verhalten des 4. und 6. Casts etwas merkwürdig vor.
Bei einem Cast in einen größeren Datentyp werden die oberen Bytes mit dem höchsten Bit (=Vorzeichenbit) des Ausgangswerts aufgefüllt. Bei einem Cast in einen kleineren Datentyp werden die oberen Bytes einfach abgeschnitten, das höchste Bit des Resultats bleibt unverändert. Hier findet also bei jeder negativen Zahl ein Overflow und möglicherweise auch ein Vorzeichenwechsel statt.
Auf den 2. Blick ist dieses Verhalten allerdings nachvollziehbar, da korrekt gecastet wird, falls der (negative) Ausgangswert in den Datentyp des Resultats passt. In diesem Fall ist das höchste Bit des Resultats im Zweierkomplement bereits korrekt gesetzt
93
Mein malloc() wird sicher nicht jedes mal ein neues Segment erstellen (das wäre totale Speicherverschwendung, schon weil so ein Segment immer ganze Pages belegt und auch etwas an Verwaltungsdaten kostet) aber ich will für jede benutzte Objekt-Größe ein neues Segment erstellen und dieses Segment wie ein Array aus Elementen dieser Größe verwalten (die Verwaltung als Array ist auch ziemlich effizient implementierbar so das malloc und free bei mir ordentlich schnell werden).

Wenn du deinen Arrays od. Buffern dann noch einen Header mit 2 Feldern für Elementgröße und Anzahl der Elemente spendierst und diese Angaben für jeden Pointer hast, wirst du absolut keine Overflows mehr brauchen (siehe: fat pointer / http://en.m.wikipedia.org/wiki/Cyclone_(programming_language)) Um diese dynamisch skalieren zu können ohne zu relokalisieren fallen mir, nur Vektortabellen ein.


94
Ich glaube die Frage vom OP war eher, ob sein Compiler Standard-konform ist, wenn jeder Cast von bzw. zu far-pointern einen Error auslösen würde. Ob dies Sinn machen würde weiss ich nicht, aber 2 Werte in einem int wären schonmal nicht gegen Overflow geschützt.
void __far *ptr;
int num;
num = (int) ptr; // ERROR 1
ptr = (void __far *) num; // ERROR 2


Edit: Thema verfehlt, neuer Code.


Die letzten 3 Kommentare bitte ignorieren/ unter "irrelevant" abspeichern.
95
hm? http://en.cppreference.com/w/cpp/language/operator_precedence

Edit: Moment... meine Referenz sagt mir zu den Gruppen 1..3 und 15..16 was anderes - Kein Anspruch auf Korrektheit.
OT: dafür dass mein Phone mir seit 2 stunden einen fehlenden Akku anzeigt, bin ich doch sehr real im Internet unterwegs.
96
Softwareentwicklung / Re: Fragen zu GRUB
« am: 25. January 2012, 16:42 »
Evtl. Noch das hier von Interesse: http://osdev.berlios.de/grub.html und das hier: http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Header-graphics-fields in den Google-Ergebnissen ganz oben :lol:.
97
@Jidder: btw: priorityof("<<") < priorityof("+")
Sorry korigiert.
98
Lowlevel-Coding / Re: EXTERN und GLOBAL in NASM
« am: 25. January 2012, 07:38 »
FLAT BINARIES, [...] beinhalten [...] Code im ASCII-Format.
Binary ist NOT equal to ASCII.

Linkt es, wenn du ELF benutzt?  :lol: :lol: :lol:
99
Meinst du
struct {
    unsigned short seg;
    unsigned int off;
};
, oder
#define PACK_POINTER(seg, off) ((seg) & 0xFFFF | (off) << 16)(Keine Garantie gegen Overflows)

32-Bit-Zeiger bis 4gb sind doch immer auch 32-Bit-int, 64-Bit-Zeiger dagegen 64-Bit-int. Das Datensegment steht in DS :lol:.
100
Softwareentwicklung / Re: OS-Developer gesucht
« am: 24. January 2012, 18:32 »
ich spiele schon seid längerem mit der Idee, ein eigenes OS zu entwickeln; mit dem Ziel ein portables, schlankes System mit unterschiedlichen Programmierschnittstellen zu erhalten.
Schau dir mal die diesbezüglichen Tutorials an im Wiki an http://www.lowlevel.eu/wiki/C-Kernel_mit_GRUB. Wenn du die Beispielcodes zum Laufen gebracht hast und deine "Skills" im Lowlevel ausgebaut hast, kannst du dich mal an einen ersten Testkernel wagen :lol:.
Seiten: 1 ... 3 4 [5] 6 7 8

Einloggen