J'utilise des programmes MSNA bébé pour m'aider à apprendre la langue. D'après ce que j'ai lu, les programmes MSNA peuvent avoir trois sections; le .data, le .bss, et le .text qui est obligatoire. Cependant, je trouve très souvent que parfois les noms des divisions sont section
et d'autres fois segment
.Différence entre "section" et "segment" dans MSNA
Par exemple, avec ce « Bonjour tout le monde » J'ai trouvé en ligne:
; hello.asm a first program for nasm for Linux, Intel, gcc
;
; assemble: nasm -f elf -l hello.lst hello.asm
; link: gcc -o hello hello.o
; run: hello
; output is: Hello World
SECTION .data ; data section
msg: db "Hello World",10 ; the string to print, 10=cr
len: equ $-msg ; "$" means "here"
; len is a value, not an address
SECTION .text ; code section
global main ; make label available to linker
main: ; standard gcc entry point
mov edx,len ; arg3, length of string to print
mov ecx,msg ; arg2, pointer to string
mov ebx,1 ; arg1, where to write, screen
mov eax,4 ; write sysout command to int 80 hex
int 0x80 ; interrupt 80 hex, call kernel
mov ebx,0 ; exit code, 0=normal
mov eax,1 ; exit command to kernel
int 0x80 ; interrupt 80 hex, call kernel
Si je change tous les cas de SECTION
-SEGMENT
il fonctionne toujours. Est-ce que quelqu'un peut expliquer la différence entre les deux, le cas échéant?
J'ai fait beaucoup de googling et je n'ai rien trouvé ... J'aurais dû regarder dans la documentation aussi, je m'en excuse. Merci pour la réponse et pour le lien. Peut-être que ce fil sera utile aux futurs crétins au moins – CodyBugstein