21 oct. 2010

fichier de configuration d'Emacs pour OSX

Ces derniers temps je me suis mis a réutiliser plus intensément Emacs sous Snow Leopard. Et comme sous OSX il peut y avoir quelques soucis de configuration notament au niveau des touches, qui ne sont pas les même sous Linux par exemple, je me suis mis à la recherche d'un .emacs correct.
Chose pas facile, car pas beaucoup de gens à vrai dire utilisent Emacs sous OSX, ou seulement dans la langue de Shakespeare. J'ai décidé de partager le fruit de recherches intenses (haééé), pour fournir (d'abord à moi) à tout le monde un fichier de configuration qui pourrais vous être utile comme base d'une configuration Emacs.
Voici le fichier .emacs:
; themes
(add-to-list 'load-path "~/.emacs.d/plugins/color-theme-6.6.0/")
(require 'color-theme)
(eval-after-load "color-theme"
'(progn
(color-theme-initialize)
(color-theme-hober)))
;Activer la coloration syntaxique
(global-font-lock-mode t)
; Mettre un maximum de couleurs
(setq font-lock-maximum-size nil)
; Pour ne pas avoir à taper en entier la réponse yes/no
(fset 'yes-or-no-p 'y-or-n-p)
; Affichage des images et fichiers compressés
(setq auto-image-file-mode t)
(setq auto-compression-mode t)
; IMPORTANT - osx related
; sinon pas de square brackets ni de curly brackets !!
(cond ((eq window-system 'ns)
(setq mac-command-modifier 'meta)
(setq mac-option-modifier 'none))
((and (eq window-system 'mac) (boundp 'aquamacs-version))
(setq mac-command-modifier 'meta)
(setq mac-option-modifier nil)))
; pour le mode terminal (au cas ou)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
; j'add le dossier de flex-mode
(add-to-list 'load-path "/Users/paraita/.emacs.d/plugins/flex-mode/")
; j'add le dossier de g-client
(add-to-list 'load-path "/Users/paraita/.emacs.d/plugins/g-client/")
; je le load
(load-library "g")
; lazy load xD
(autoload 'flex-mode "flex-mode" "Major mode for editing lex files." t)
(setq auto-mode-alist
(append '(("\\.l$" . flex-mode)
("\\.ll$" . flex-mode)
("\\.lex$" . flex-mode)) auto-mode-alist))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(gblogger-user-email "toto@gmail.com")
'(inhibit-startup-screen t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)  
; fullscreen (patched)
(global-set-key (kbd "M-RET") 'ns-toggle-fullscreen)

19 oct. 2010

rencontre avec l'assembleur MacIntel

Ca commence bien... :/

MacBook-de-Paraita-Wohler% nasm -f macho hello.asm

MacBook-de-Paraita-Wohler% gcc -arch i386 hello.o -o hello

MacBook-de-Paraita-Wohler% ./hello

Hello eure

zsh: segmentation fault ./hello

MacBook-de-Paraita-Wohler%

18 oct. 2010

L'assembleur avec un macbook

Je suis une UEL ou l'on apprend l'assembleur pour processeur 8086.
Le professeur nous a conseillé d'utiliser une machine de la fac pour programmer mais étant curieux je me suis dis pourquoi pas essayer avec mon macbook ? de toute manière depuis que les mac sont passé sous architecture intel, je pense que ca n'est surement pas si différent que ca !
Pour commencer il faudra utiliser Nasm (Netwide Assembler), qui est disponible sur Mac. Je pense qu'il est possible de le compiler directement à partir des sources, peut être même qu'il y a un binaire disponible ? Mais j'ai opté pour macport, je l'installe donc avec:
sudo port install nasm
Il faut donc avoir déjà installé macport. Je suis sur qu'avec Fink c'est aussi possible de l'installer.
Il est recommandé d'utiliser gcc gnu, mais ca fonctionne très bien avec le gcc d'Apple.
J'ai trouvé ici un tutorial pour un Hello World en assembleur.
D'ailleurs il ne faut surtout pas oublier de spécifier l'architecture à nasm lorsque l'on va compiler notre source en fichier objet:
nasm -f macho helloworld.asm
Puis l'appel à gcc se fait par:
gcc -arch i386 helloworld.o -o helloworld
Chez moi j'ai du rajouter le flag -arch i386 car par défaut gcc s'attend à un fichier objet architecturé pour x86_64, or nasm retourne un fichier objet architecturé i386. Comme on fournit déjà le fichier objet à gcc, il ne fait que l'édition de liens, donc je pense qu'on peut passer par ld directement mais j'ai la flemme de chercher.
Par contre j'ai un soucis lors de l'execution du programme, une erreur de segmentation...

liens utiles: