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 - bitmaster

Seiten: [1] 2 3 ... 57
1
Hi, ich melde mich auch mal wieder.  :-D

Ich arbeite an ein Programm, welches Informationen über den Prozessor ausgibt. Dazu verwende ich den cpuid Befehl und nutze also inline-assembler. Um zu überprüfen, ob der cpuid Befehl überhaupt vorhanden ist, muss man ja testen ob sich das Bit 21 "umdrehen" lässt. Dazu muss man ja an die Bits des Flags-Registers kommen. Das geht ja bekanntlich über das pushf/popf Befehlspaar. Im 32 bit mode werden 32 bit auf dem stack gepusht/gepopt und im 64 bit mode eben 64 bit. Aber um jetzt an die bits zu kommen kann man sie ja z.b. mittels pop vom stack in ein register popen. Aber genau da liegt mein Problem. Wenn ich "pop %%eax;" schreibe, meckert 64 bit g++ und wenn ich "pop %%rax;" schreibe, meckert 32 bit g++. Meine Frage ist also. Gibt es eine möglichkeit dem g++ zu sagen, dass er, falls er 32 bittig ist das eax register nimmt und falls er 64 bittig ist das 64 bit register nimmt? Vielen dank!!!

bitmaster
2
Lowlevel-Coding / 64 bit fpc und elf32
« am: 17. June 2009, 16:52 »
Hi,

ich melde mich auch mal wieder.  :-D

Sagt mal ist es möglich der 64 bit Version von fpc zu sagen, dass sie elf32 als Ausgabeformat verwenden soll? Also ähnlich dem gcc mit der Option -m32. Ich verwende nämlich eine 64 bit linux distribution und somit auch die 64 bit version von fpc. Ich möchte einen kleinen "kernel" in Pascal schreiben. Der soll per GRUB geladen werden und das Dateiformat soll elf32 sein.

thx

bitmaster

PS: Was sind eigentl. so die Unterschiede zwischen fpc und gpc?
3
Lowlevel-Coding / Re: C/C++ und Zahlensysteme
« am: 25. April 2009, 07:30 »
Meistens nimmt man aber lieber (object-like) Makros oder enums. Dann hat man Namen statt Nummern. :wink:
Aber bei manchen Sachen hat man einfach keine Lust sich so viele Namen auszudenken. :-P

Nee, stimmmt schon. Du meinst sicher:

var = CONST1 or COST2 or CONST3;
Nun ja, aber da bin ich dann doch im Moment ein wenig zu faul für. Aber im Grunde hast du schon recht.

bitmaster
4
Lowlevel-Coding / Re: C/C++ und Zahlensysteme
« am: 24. April 2009, 22:24 »
Wenn numerische Konstanten in binärer Schreibweise denen in hexadezimaler Schreibweise vorzuziehen sind, ist eh was kaputt am Code.
Nö, nur gibt es manchmal Bits, die eine gewisse Bedeutung haben. Deshalb sieht eine binäre Schreibweise manchmal deutlicher aus. Aber OK, man kann ja in Kommentaren dahinter schreiben was welches Bit bewirkt.

bitmaster
5
Lowlevel-Coding / Re: C/C++ und Zahlensysteme
« am: 24. April 2009, 16:07 »
Es geht nicht in C/C++.Hm... ok, schade. Wäre ja mal was, womit man C/C++ einwenig auffrischen könnte.  :wink:

bitmaster
6
Lowlevel-Coding / Re: C/C++ und Zahlensysteme
« am: 24. April 2009, 15:34 »
Also wenn ich ein 0% davor mache, dann macht gcc eine Null daraus. Und wenn ich nur ein % davor mache, dann meckert gcc.

hmm...
7
Lowlevel-Coding / C/C++ und Zahlensysteme
« am: 24. April 2009, 13:08 »
Hi,

ich möchte gerne einer Variable einen Wert zuweisen. Diesen möchte ich aber in binärer Schreibweise angeben. Also bei dezimaler und hexadezimaler würde man es ja so machen:

var = 0xBADC0DE; //hex
var = 195936478; //dez

Tjo in Assembler würde man an der Zahl ja einfach ein kleines b anhängen, aber in C scheint dies nicht zu funktionieren, da mein gcc meckert. Könnt ihr mir sagen wie das geht? Also klar könnte ich den Wert z.B. in hexadezimaler Form angeben und dahinter den Wert binär als Kommentar schreiben, aber wenn es direkt geht, wieso nicht?

thx

bitmaster
8
Lowlevel-Coding / Re: delphi, array und cpuid
« am: 10. April 2009, 22:40 »
Ah ok vielen dank euch. Ich habe das jetzt so gemacht:

program cpuid;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  str: array[0..12] of byte;
  s: string;

begin
  asm
    mov eax,0
    cpuid
    mov dword ptr [str],ebx
    mov dword ptr [str+4],edx
    mov dword ptr [str+8],ecx
    mov byte ptr [str+12],0
  end;

  s := PAnsiChar(@str);
  Writeln('Vendor-String: ' + s);
  Readln;
end.

bitmaster
9
Lowlevel-Coding / delphi, array und cpuid
« am: 10. April 2009, 17:09 »
Hi,

ich mache gerade einbisschen was mit Delphi/Pascal. Ich will mittels inline-asm den Vendor-String der CPU ausgeben. So mache ich das bis jetzt:

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  str: string[13];

begin
  asm
    mov eax,0
    cpuid
    mov dword ptr [str],ebx
    mov dword ptr [str+4],edx
    mov dword ptr [str+8],ecx
    mov byte ptr [str+12],0
  end;

  Writeln('Vendor-String: ' + str);
  Readln;
end.

Nur leider gibt er mir immer folgendes aus:

Zitat
Vendor-String: enuineIntel

Tjo und somit fehlt das G, da es ja GenuineIntel heißen müsste. Aber was mache ich verkehrt? Wenn ich anstatt

    mov dword ptr [str],ebx
einfach

    mov dword ptr [str+1],ebx
schreibe, dann gibt er den String net aus (vermutlich, weil sich bei [str+0] eine null befindet und er es als Ende des Zeichenstrings interpretiert. Schreibe ich aber

    mov byte ptr [str],'a'
    mov dword ptr [str+1],ebx

Dann gibt er

Zitat
Vendor-String: GenuineIntel

aus, also ohne dem a. Aber wieso? Prüft delphi ob das erste Zeichen der Zeichenkette ungleich null ist und wenn ja, dann gibt er ab dem zweiten zeichen aus, ansonsten gar nichts???? Das ist sehr mergwürdig. Kennt sich jemand von euch mit Delphi / Pascal aus?

thx

bitmaster
10
Lowlevel-Coding / virtuelle Speicherverwaltung - free
« am: 05. April 2009, 21:01 »
Hi,

ich habe mir mal erlaubt den Source der Funktion free von tyndur (oder so) anzuschauen, weil ich wissen wollte, wie ihr das so mit dem wieder freigeben von Speicher macht. Nun stelle ich aber fest, dass der Speicher gar nicht wieder freigegeben wird. Wenn ich den Code richtig verstanden habe, wird stattdessen der memory node einfach in eine "Free-Liste" eingetragen. D.h., dass einmal reservierter Speicher gar nicht mehr freigegeben wird? Ist das nur eine "Notlösung" oder ist das wirklich die Funktionsweise von free?

thx

bitmaster
11
Offtopic / Re: PHP und die get Methode.
« am: 30. March 2009, 23:43 »
Ah ok, vielen dank euch. Aber das Buch, aus dem ich den Quellcode habe, ist von 2003 und hat im Titel PHP 4 stehen. Also kann das ja noch nicht so lange her sein. Geht das also erst seit PHP 5 nicht mehr? Oder hat das mit dem Server zu tun? Ich kenne mich da noch nicht so aus. Aber ich habe, so weit ich weiß, Apache 2.

vielen dank noch mal

bitmaster
12
Offtopic / PHP und die get Methode.
« am: 30. March 2009, 17:50 »
Hi,

ich fange gerade an PHP zu lernen. Den Apache Server habe ich auch schon zum laufen gebracht, und erste Ausgaben mittels echo habe ich auch schon gemacht. Jetzt frage ich mich wieso folgendes nicht funktioniert:

Ich habe eine index.php, die wie folgt aussieht:

<html>

<head>

<title>Ich lerne gerade PHP. :-)</title>

</head>

<body>

<form method="get" action="antwort.php">
<input name="Artikelgruppe" type="text">
<input type="submit">
</form>

</body>

</html>


Könnte ich eigentlich auch index.html nennen, da ich dort ja kein php verwende, oder? Diese sollte die Eingabe der Variable Artikelgruppe zuordnen. Und die antwort.php soll dann was damit machen:

<html>

<head>

<title>antwort</title>

</head>

<body>

<?php
echo "Sie haben "$Artikelgruppe"eingegeben.";

if ($Artikelgruppe == "Eis")
{
echo "Jo, Eis ist lecker.";
}

else if ($Artikelgruppe == "Pizza")
{
echo "Hmm, eine leckere Pizza ist schon was tolles.";
}

else
{
echo "Ich kenne nur Eis und Pizza.";
}
?>


</body>

</html>

Nur leider gibt der Browser immer folgendes aus, egal was ich eingebe:

Zitat
Sie haben eingegeben.Ich kenne nur Eis und Pizza.

Sieht also so aus, als würde der Variable noch gar nichts zugewiesen worden sein. Aber wieso? Was mache ich falsch?

bitmaster
13
Lowlevel-Coding / Re: Referenzen als Funktionsübergabe
« am: 28. March 2009, 14:57 »
Dann nimm einen C++ Compiler. Es hat nicht umsonst hinten ein "++", irgendwas muss sich schließlich verändert haben...
Hmm... bist du jetzt sauer?
Nö, aber wenn man C++ will (was ja ein legitimes Anliegen ist, ich benutze es ja selbst für meinen Kernel), dann sollte man eben einen C++ Compiler verwenden. Das bringt eigentlich auch keine größeren Probleme mit sich.
damals habt ihr mir von c++ abgeraten als ich es wollte, ihr meintet c wäre für mich besser :/
14
Lowlevel-Coding / Re: Referenzen als Funktionsübergabe
« am: 28. March 2009, 14:31 »
Dann nimm einen C++ Compiler. Es hat nicht umsonst hinten ein "++", irgendwas muss sich schließlich verändert haben...
Hmm... bist du jetzt sauer?

Zitat
In C hast du nur Zeiger, mit denen du aber ähnliches machen kannst.
Hmm... könntest du mir das anhant des Beispiels von meiner oben genannten Funktion quadrat erklären/zeigen?

danke
15
Lowlevel-Coding / Re: Referenzen als Funktionsübergabe
« am: 28. March 2009, 12:58 »
Also ist das erst seit C++ möglich, oder wie?
ja. In C hast du nur Zeiger, mit denen du aber ähnliches machen kannst.
bug
16
Lowlevel-Coding / Referenzen als Funktionsübergabe
« am: 28. March 2009, 12:34 »
Sind Referenzen als Funktionsübergabe in C nicht möglich? In meinem C++ Buch steht folgeder Code:

void quadrat(int &x)
{
x = x*x;
}

Aber wenn ich das dem gcc sage, dann meint er:

Zitat
Fehler: expected »;«, »,« or »)« before »&« token

Also ist das erst seit C++ möglich, oder wie?

bitmaster
17
Immerhin hat er zu den Versionsnummern kein Datum geschrieben. Mit ein paar Rewrites ist es zwar immer noch nicht sinnvoll, aber gehen könnte es schon irgendwie. ;)
Irgendwie gehen könnte selbst ein Wurm, wenn er nur Beine hätte.  :|
18
Darf ich dir einen guten Tipp geben? Das wird so nichts. *duck*

 :-D

bitmaster
19
Softwareentwicklung / Re: x86-Code auf AMD64 produzieren
« am: 13. March 2009, 07:47 »
Lösung: KDE 3  :-D

Das wollte ich aber nicht benutzen ;)
selber schuld  :-P
20
Softwareentwicklung / Re: x86-Code auf AMD64 produzieren
« am: 12. March 2009, 22:39 »
Lösung: KDE 3  :-D
Seiten: [1] 2 3 ... 57

Einloggen