Tôi đang sử dụng một số chương trình NASM cho bé để giúp tôi học ngôn ngữ.Sự khác biệt giữa "phần" và "phân khúc" trong NASM
Từ những gì tôi đã đọc, các chương trình NASM có thể có ba phần; .data, .bss và .text là bắt buộc. Tuy nhiên, tôi thấy rất thường xuyên rằng đôi khi tên của các đơn vị là section
và các lần khác là segment
.
Ví dụ với điều này "Hello World" Tôi tìm thấy trực tuyến:
; 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
Nếu tôi thay đổi mọi trường hợp của SECTION
-SEGMENT
nó vẫn sẽ làm việc.
Ai đó có thể giải thích sự khác biệt giữa hai loại này, nếu có?
Tôi đã làm rất nhiều Googling và không tìm thấy bất cứ điều gì ... Nên đã xem xét các tài liệu quá, tôi xin lỗi. Cảm ơn câu trả lời mặc dù và cho liên kết. Có lẽ chủ đề này sẽ hữu ích cho morons tương lai ít nhất – CodyBugstein