|
ACCÈS RAPIDE LIMITATIONS CONNUES DE FB^3 FB^3 - NETTOYAGE APRÈS CRASH... QUESTIONS D'OPTIMISATION LA LISTE [VOLÉE] DE NOUVEAUTÉS À VENIR FONCTIONS CACHÉES [Sommaire des FAQ] [FAQ suivantes] [FAQ précédentes] Mise à jour 21 jan. 2000 |
FAQ #5 :: HIGH-LEVEL STUFF LES LIMITES DE FB^3 Les Procédures et Fonctions de la Toolbox peuvent prendre un nombre illimité de paramètres. Les Fonctions locales de FB ( LOCAL FN) n'ont pas de limite au nombre de paramètres, mais à partir du huitième paramètre vous ne pouvez pas passer une expression complexe (telle "a$ + MID$(b$,10)". Si vous tentez néanmoins à le faire, le Compilateur devrait vous en avertir.[Q]: Je n'ai pas vu de spécifications minimales pour faire tourner FB^3... [R]: Système 7.6 [Q]: Les espaces avant les deux points sont elles nécessaires? [R]: Sauf si cela vient de changer, une ligne de code telle: BEEP:BEEP*pourrait* amener le Compilateur à penser qu'il s'agit d'une étiquette QuickBasic. Changez-le en: BEEP : BEEPEt le Compilateur arrêtera de se plaindre. Cela s'appelle "Étiquettes QuickBasic", et la documentation se trouve dans le manuel de l'Éditeur FB^3. Décochez cette option dans les préférences et votre application compilera sans problèmes. Actuellement tout ce qui se trouve avant les deux-points est considéré comme une étiquette et n'est pas exécuté - ainsi dans une ligne comme " CLS:PRINT:PRINT", le CLS n'est pas exécuté - donc si vous avez deux lignes qui commencent avec BEEP:, la seconde est considérée comme une étiquette en double, d'où l'avertissement.Alternativement, vous pouvez insérer des esapces avant les deux points - mais changer les préférences est plus rapide. [Q]: Dans mon code, j'utilise 'CLEAR LOCAL FN'. Selon le manual ceci est pareil que:CLEAR LOCALJe n'ai aucune erreur au moment de la compilation, mais les fonctions n'apparaissent pas dans le menu FN. Est-ce un bogue?[R]: Le menu FN ne sait pas trouver une fonction qui commence avec CLEAR LOCAL FN, il recherche <CR> LOCAL FN.[Q]: Avec FBII les 15 premiers signes d'une fonction [ou d'une constante] devaient être uniques car FB ne considérait que ces signes pour reconnaître une expression. Est-ce pareil avec FB^3 [R]: Non. Il y plusieurs choses dont il faut tenir compte, mais une fonction tient désormais compte des 240 premiers signes pour son nom. [Q]: Je peux générer du code FB PPC sur une machine 68K, mais pas de l'assembleur PPC. Pourquoi? [R]: Cette version de l'assembleur FB^3 ne sait générer du code que lorsqu'il se trouve sur le processeur cible. Donc, il n'est pas possible de créer de l'assembleur 68K sur un PPC non plus. [Q]: Les comparaisons entre des entiers longs non-signés ne fonctionnent pas correctement lorsque le bit le plus signifiant [most-significant bit] est allumé dans un des deux. Voyez l'exemple: '-------------------[R]: Dans cette version: + & - fonctionnent, mais >,<,=,*,/ etc. ne fonctionnent pas avec les entiers longs non-signés... si l'un d'entre eux est négatif. |
|
[haut de la page] |
FB^3 - NETTOYAGE APRÈS CRASH... [Q]: Quel est l'équivalent au remplacement du fichier Staz Extras? [Ceci était parfois nécessaire après une bombe grave dans FBII- gardien des FAQs] [R]: Je jetterais à la corbeille le dossier STAZ dans votre dossier Préférences. Les autres choses ne sont placées sur le disque dur que par le programmeur. Vous pouvez toujours essayer le dossier FB Extras. Mais, vu que FB^3 ne tourne pas dans la même partition mémoire que l'application que vous êtes en train de compiler, la possibilité que vous avez d'abîmer le compilateur ou l'éditeur ( ou même votre fichier de ressources) est fortement réduite. [Q]: L'ancien conseil de mettre à la poubelle le fichier de projet est-il toujours d'actualité? ou peut-il avoir des conséquences graves? [R]: Ce n'est plus d'actualité. Le fichier projet n'est plus fabriqué automatiquement et cela risque de vous donner beaucoup de boulot pour le refaire à la main à chaque fois. [Q]: Après une 'bombe' [de ma faute] la fenêtre de l'Éditeur ne zoome plus à son emplacement antérieur! [R]: Vous pouvez enlever la ressource 'wpos' de votre fichier [pas forcément facile], mais c'est plus facile de jeter le fichier des préférences (chemin "Dossier Système:Préférences:Staz:Préfs Editeur FB"). Ou vous pouvez tenir la touche 'Option' en démarrant FB^3 et les préférences seront réinitialisées à leurs valeurs par défaut.[Q]: D'accord, j'ai dupliqué le fichier de Projet pour avoir une sauvegarde, j'ai retiré la ressource 'wpos'. Puis je l'ai lancé. La fenêtre s'est ouverte vers le milieu de l'écran. Je l'ai repositionnée puis fermée et j'ai quitté. Ensuite j'ai vérifié la ressource 'wpos' et les informations étaient correctes.Puis j'ai vérifié le fichier duquel j'avais retiré la ressource 'wpos': la ressource 'wpos' était toujours manquante... Que dois-je comprendre?[R]: Il faut déplacer une fenêtre avant que la ressource 'wpos' ne soit enregistrée. Essayez ça puis ré-examiner le fichier.[Q]: Si vous avez des problèmes sérieux avec un projet, créez-en un nouveau avec des fichiers vides. Transférez le texte à la main à partir de l'ancien projet. Sauvegardez le nouveau projet. Mettez l'ancien à la corbeille. C'est un peu long, mais ainsi vous êtes sûr de ne pas copier des ressources corrompues. [R]: M erci. |
|
[haut de la page] |
QUESTIONS D'OPTIMISATION [Q]: L'alignement des variables n'a pas d'effet discernable. Dans des tests afin de mesurer son effet j'ai trouvé même un cas où l'optimisation est plus lente que le code non optimisé. [R]: Il se peut très bien que vos variables tombent naturellement sur des adresses paires [des multiples de 4, 8 ou de 16 selon les cas]. Cette optimisation n'affectera la vitesse que dans le cas d'une variable appelée des millions de fois qui ne serait pas alignée autrement _et_ qui n'aurait pas de place dans un registre. [Q]: [A propros des résultats des tests de vitesse avec le même code qui s'exécute de manière différente selon son emplacement en mémoire]. Nous avons trouvé qu'un alignement sur des emplacements mémoire pairs [multiples de 16/8/4 octets] n'a pas d'effet sur la rapidité d'exécution de nos boucles tests - ce qui fut une surprise. il semble, en fin de compte, que la vitesse est beaucoup plus dépendante de la mémoire cache du processeur, et que les résultats sont assez difficilement prévisibles... [R]: Extrait des notes techniques du Motorola MPC750 (ce qu'Apple appelle le G3): Performance features such as the branch folding, removal of fall-through branch instructions, BTIC, dynamic branch prediction (implemented in the BHT), two-level branch prediction, and the implementation of nonblocking caches minimize the penalties associated with flow control operations on the MPC750. The timing for branch instruction execution is determined by many factors including the following: Whether the branch is taken Whether instructions in the target stream, typically the first two instructions in the target stream, are in the branch target instruction cache (BTIC) Whether the target instruction stream is in the on-chip cache Whether the branch is predicted Whether the prediction is correct [Note du gardien des FAQS - j'ai laissé en anglais - j'ai peur de faire une erreur en faisant une traduction 'hasardeuse'] Il n'est pas fait mention de répercussions sur la vitesse d'exécution selon l'emplacement du code en mémoire. Ceci semble être un sujet pour une autorité plus elevée, probablement Apple dans un premier temps. |
|
[haut de la page] |
LA LISTE [VOLÉE] DES NOUVEAUTÉS À VENIR Veuillez noter: Cette liste ne reflète uniquement les informations que le a pu assembler de sources diverses et variées - la plupart sont secrètes d'ailleurs. À aucun moment elle ne reflète des stratégies, des promesses, ni des garanties ou quoi que ce soit d'autre de la part de Staz Software, ni de quelque personne que ce soit associée avec Staz Software. [Q]: J'aime bien la fenêtre d'entrée du 'Runtime Lite', mais ne pourrait-il pas être repositionnable? Elle cache une partie de ma fenêtre d'affichage mais je ne peux pas la déplacer, même si elle a une barre de titre. [R]: Ceci nécessiterait une autre routine 'Proc' dans le 'Runtime Lite'. Je le mets sur la liste.... [Q]: Un des problèmes avec FB [et c'est de ma faute] est que j'oublie de quitter mon application, donc je quitte FB, puis je dois penser à quitter mon appli. J'amerais une option qui dirait à FB de prévenir mon appli test de quitter si je retourne dans l'Éditeur. [R]: Pour l'instant les fonctionnalités additionnelles pour le release 1 sont gelées [Et il n'y aura pas d'exception] mais je peux le mettre sur la liste pour une version ultérieure. [Q]: Je veux pouvoir tirer et déposer une bibliothèque partagée sur la fenêtre du gestionnaire de projets. Puis les appels TOOLBOX et LIBRARY me permettraient d'appeler cette bibliothèque dans mon projet. [...] ou encore, j'aurais la possibilité de 'lier en dur' ['hard link'] mon code à cette bibliothèque. Le code compilé de la bibliothèque étant intégré dans mon projet au moment de la compilation. Pourquoi? L'utilisateur n'as pas besoin d'avoir la bibliothèque dans son dossier système - oh, y'en a plein, vous en connaissez beaucoup qui ont ZLib, ZOOP, WASTE, etc.installé sur leur station? [R]: D'accord. Sur la liste. [Q]: Quelqu'un n'avait-il pas promis quelque chose à propos de la création des ressources de code en 68K avec FB^3? [R]: Nous y sommes presque, mais ce ne sera pas dans le Release 1. [Q]: je voudrais signaler que les expressions pour l'assembleur PPC pèchent un peu... Tout compile sans problèmes, ce n'est pas cela, mais certains des mnémoniques simplifiés sont manquants particulièrement pour les branchements; bne, blt, bgt, li, etc. me manquent énormémentl'assembleur 68K est par contre tout simplement terrible! Je peux enfin accéder aux variables globales, faire des grands sauts autour des fonctions FB, et les etiquettes restent intactes! Waouh. [R]: ... [Q]: Quand est-ce qu'il y aura la possibilité d'examiner les variables dans le débogeur? [R]: Je ne sais pas. Pas pour la Release 1. Probablement la suivante. [Q]: Je suis toujous en train de changer les préférences quand je change de projet. Peut-être que chaque projet pourrait avoir ses propres préférences? Il pourrait y avoir une boîte de dialogue "Préférences du project". Les préférences dans la boîte actuelle seraient les valeurs par défaut pour les nouveaux projets.... [R]: Sur la liste... mais pas dans la Release 1. [Q]: Pourriez-vous rajouter un menu "Favorits" ou "Récents" - comme dans ResEdit - ou un menu 'Projets Récents' afin que l'Éditeur nous laisse choisir le projet à ouvrir lorsqu'on démarre. Peut-être les 5 derniers projets ou documents dans un menu hierarchique - et bien-sûr une méthode simple pour les supprimer... [R]: Bonne idée. Sur la liste. [Q]: D'accord, ma dernière suggestion vous a plu; j'en tente une autre. Peut-on avoir des constantes pour les chaînes de caractères comme _chaîneConstante$ = "ceci est une constante pour une chaîne de caractères". Exactement comme les constantes numériques, elles ne changent pas, mais cela réduirait les variables globales nécessaires dans un projet...[R]: En fait c'est excatement ce que fait FB^3 dans les coulisses! Mais nous ne l'avons pas rendu accessible au programmeur. Maintenant c'est sur la liste! [D'accord Summer voici votre os, gentil chien... :-) ] |
|
[haut de la page] |
FONCTIONS CACHÉES Fonction non-documentée #1, contribution d'Andy Gariepy lui-même: PROGRAM 1 - empêche les variables que vous avez déclarées d'être placées dans les registres.PROGRAM 0 - permet aux variables que vous déclarez à travers DIM, d'être placées dans les registres.Fonction non-documentée #2, contribution de Staz: FB^3 gère des vitesses de 115K et 230K baud sur le port de communication. Vous avez aussi la possibilité d'adresser 8 ports à la place de 2. L'exemple montre combien de ports sont actuellement utilisés et leur nom. window 1Fonction non-documentée #3, d'Andy, documentée par Staz:Andy nous raconte que les caractères 'Option-espace' ou 'Option-tiret' sont les grandes causes de ligne qui refusent de compiler, car on ne peut pas voir que nous avons frappé le mauvais caractère. L'Éditeur de FB - sur des systèmes occidentaux - convertit automatiqument 'Option-espace' en espace, et 'Option-tiret' en tiret ordinaire lorsque vous choississez l'article 'Supprimer les espaces' du menu "Édition". Fonction non-documentée #4: gardez appuyé la touche 'Option' au démarrage et les préférences par défaut de l'Éditeur remplaceront vos préférences actuelles. Fonction non-documentée #5: Andy a rajouté la fonctionalité suivante. FB^3 vous permet d'avoir des fichiers de ressources multiples. Actuellement, si une ressource de même type et ayant le même ID existe dans deux de vos fichiers, la seconde qui sera chargée, remplacera la première dans votre projet compilé. Mais une nouvelle fonctionalité renomme désormais les ressources en double à partir de l'ID 32512 et ce jusqu'à 32767. Dès lors, une de vos ressources peut être renumérotée à cause d'un conflit, il faut accèder à vos ressources par FN GETNAMEDRESOURCE("lenom",_"Type") et non plus par le biais de son numéro ID. Les ressources qui ne sont pas entre 32512 et 32767, ne seront pas concernées.Fonction non-documentée #6: Actuellement, lÉditeur scrute le dossier des headers afin de trouver tout fichier qui est au format texte, généré par FB^3 et ayant un nom qui commence par "RnTm" et qui finit par ".INCL". Ce qui veut dire que n'importe qui peut rajouter ses propres fichiers de Runtimes simplement en utilisant un nom qui convient et en les mettant dans le dossier. C'est cool. À titre d'exemple, j'ai crée un fichier vide appelé "Rntm PalmPilot.Incl" et voilà, il est apparu dans le Project Manager au bon endroit. Le choisir m'a généré un joli projet "Palm Pilot" - sans le code Runtime hélas. [Mais ceci amène la question... sachant que les Palm utilisent un processeur Motorola 68Ket que FB^3 sait compiler du code 68K, *avec* le "Runtime" approprié... FB^3 ne pourrait-il pas générer des applications pour le Palm? Huh?] Fonction non-documentée #7 [Q]: Je remarque dans le Manual de Référence que l'instruction END libère toutes les ressources. Est-ce que cela veut dire que nous n'avons plus besoin de libérer les ressources une par une, même les 'non-purgeables', à partir du moment où l'instruction END est la dernière exécutée?[R]: Oui. |
|
FutureBASIC est une marque déposée appartenant à Staz Software, Inc et utilisée avec permission. |
||