2013-02-27 26 views
12

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ó?

Trả lời

22

Từ nasm documentation:

Chỉ thị PHẦN (BỘ PHẬN là một từ đồng nghĩa một cách chính xác tương đương)

NASM có thể sản xuất ra nhiều định dạng khác nhau, một số trong đó hỗ trợ phần. Một số tên phần nhất định có thể tùy ý (chẳng hạn như ba tên bạn liệt kê), chỉ cho các phần cờ đếm. Các phím được xác định trước chỉ là các phím tắt tiện lợi, .text được đánh dấu là có chứa mã, .data dưới dạng dữ liệu đã ghi khởi tạo đọc và .bss dưới dạng dữ liệu đọc ghi được khởi tạo bằng không. Bạn có thể đặt mã của mình trong một phần có tên là foo miễn là mã được đánh dấu là một phần mã và bạn có thể sử dụng nhiều phần như bạn thấy phù hợp.

+0

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

Các vấn đề liên quan