char *a=(char *)(0xAdresse) explication - C - Programmation
Marsh Posté le 17-11-2004 à 19:23:51
il transforme un nombre 32 bits en adresse mémoire pointant sur des char
Marsh Posté le 17-11-2004 à 19:29:22
je veux savoir si il y a une adresse reserver pour les entier les char comme c est le cas pour l adresse de la vram 0xa0000000
Marsh Posté le 17-11-2004 à 19:44:06
je programme un moteur 3d avec le mode 13h
je veux avoire une resolution superieur sans passer par directX ou opengl
Marsh Posté le 17-11-2004 à 19:44:22
je programme un moteur 3d avec le mode 13h
je veux avoir une resolution superieur sans passer par directX ou opengl
Marsh Posté le 17-11-2004 à 19:51:51
Achète toi un bon bouquin de programmation en C. Et ensuite, va voir ce document, qui est la référence des Vesa Bios Extensions.
Le lien: http://www.vesa.org/vbe3.pdf
Marsh Posté le 17-11-2004 à 20:01:56
ya aussi le black book de Michael Abrash qui doit etre une reference
Marsh Posté le 17-11-2004 à 20:04:21
cris56 a écrit : ya aussi le black book de Michael Abrash qui doit etre une reference |
CECI EST UN TOPIC COMPATIBLE HARKONNEN.
Marsh Posté le 17-11-2004 à 20:12:29
cris56 a écrit : ca veut dire quoi ? (serieux j'ai pas compris) |
Je te le fais en turbo pascal alors:
begin
if (topic=="AMIGA" ) or (topic=="DEMO-MAKING" ) or (topic=="ASSEMBLER" )
then writeln ("Harkonnen compatible" );
end.
Marsh Posté le 17-11-2004 à 20:16:05
ok, mais reconnais que ne connaissant pas harkonnen et ses penchants, ca m'aurais été difficile de deviner
je suis d'accord, c'est vieux tout ca (et surtout on s'en fou)
Marsh Posté le 23-11-2004 à 20:22:55
tiens en parlant des types "char *", j'ai une question pour ma culture personnelle :
lorsqu'on on tape l'instruction :
char *chaine = "bonjour";
Comment marche les mécanismes de l'allocation memoire pour cette chaine derrière ? (il convertit cela en l'instruction de declaration avec un tableau :
char chaine[8]={'b','o','n','j','o','u','r', '\0'};
)
Marsh Posté le 23-11-2004 à 20:30:28
ben non, tableau != de pointeur
ton "chaine" pointe sur la chaine constante "bonjour"
Marsh Posté le 23-11-2004 à 20:31:55
Giz a écrit : tiens en parlant des types "char *", j'ai une question pour ma culture personnelle : |
Nope.
char *chaine1 = "bonjour";
char chaine2[8]={'b','o','n','j','o','u','r', '\0'};
sizeof(chaine1) = sizeof (char *) (probablement 4 sur un PC);
sizeof(chaine2) == 8;
D'autre part, chaine1 n'est qu'un pointeur, qui pointe vers une zone mémoire contenant bonjour. chaine2 est directement l'adresse d'une zone mémoire de 8 caractères.
Enfin, "bonjour" est du type const char * en théorie. Donc cela devrait être:
const char * chaine = "bonjour";
Tout comme il est préférable d'avoir:
char chaine[]="bonjour";
plutôt que de donner la taille soi-même.
Marsh Posté le 23-11-2004 à 20:56:34
cris56 a écrit : ya aussi le black book de Michael Abrash qui doit etre une reference |
Ouep, mais ce n'est pas forcément très accessible. mais rien que pour la démarche ça vaut le coup.
Marsh Posté le 24-11-2004 à 11:09:31
tiens, un topic intéressant
anis_sg >> pour programmer dans une résolution supérieure à celle proposée par le mode 13h, tu dois utiliser le mode VESA comme le précise Lam's
tous les appels se font par la fonction 4Fh, que tu dois placer dans AH. dans AL, tu places la sous fonction correspondante, et tu balances le tout à l'interruption 10h
pour initialiser le mode VESA (je me base sur mes souvenirs du VESA 2.0):
- vérifier la disponibilité du mode souhaité via la sous fonction 00h (AH = 4Fh, AL = 00h). tu dois également fournir un pointeur FAR de 256 octets dans ES:DI. en retour, tu obtiens dans ce buffer des infos sur la carte. étape facultative, on peut supposer que toutes les cartes actuelles sont OK, mais bon, c'est mieux de passer par là
- récupère ensuite les infos du mode souhaité via la sous fonction 01h, avec là encore une structure à passer en ES:DI. cette structure doit être décrite dans le lien que t'as filé Lam's.
- ensuite active ce mode via la sous fonction 02h, avec le mode souhaité dans BX. sauvegarde ensuite dans un tableau les adresses de départ des différentes fenêtres d'accés (via le champ Granularity de la structure précédente)
- change enfin de fenêtre d'accés à la RAM via la fonction 05h, avec en DX l'adresse de départ de la banque courante sauvegardée précédemment
c'est un résumé hein ! je suppose que le document linké par Lam's doit être assez indigeste, alors j'ai esssayé de te débroussailler un peu, mais tu devras de toutes façons le lire, vu que ce que je t'ai dit est valable pour le VESA 2.0, il est possible que ça ait été modifié pour la version 3.0
Marsh Posté le 17-11-2004 à 19:22:38
je voudrai une explication sur
char *a=(char *)(0xAdresse)
que fait se casting il force quoi
merci