1. Trang chủ
  2. » Công Nghệ Thông Tin

Định hướng chương trình dịch PASCAL

18 1K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 361,19 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Định hướng chương trình dịch trong Pascal, sử dụng trên các trình biên dịch thông dụng

Trang 1

ALIGN DATA

Cú pháp {$A+} hoặc {$A-}

Mặc định {$A+} bật chế độ bố trí theo word để chạy nhanh

Kiểu Global: có ảnh hưởng tới toàn bộ quá trình dịch

Ghi chú Định hướng $A chọn một trong hai cách bố trí các biến và

các hằng định kiểu với đơn vị theo byte hoặc theo word Trong trạng thái {$A+}, tất cả biến và hằng định kiểu có kích thước lớn hơn một byte đều được bố trí theo một đơn vị word Nếu cần, những byte vô ích sẽ được chèn vào giữa biến để thực hiện việc bố trí Điều này cũng có nghĩa là ta tốn một ít bộ nhớ để làm việc chèn thêm byte vô ích này Định hướng {$A+} không ảnh hưởng tới các biến có kích thước tính theo byte cũng như không ảnh hưởng tới các trường của bản ghi và các phần tử của mảng Một trường trong bản ghi sẽ được bố trí theo word chỉ nếu kích thước tổng cộng của tất cả các trường trước đó là chẵn Đối với mỗi phần tử của mảng để bố trí theo word kích thước của mỗi hần tử cũng phải là chẵn

Trong trạng thái {$A-}, không có một biện pháp bố trí nào được dùng Các biến và hằng định kiểu được thay thế một cách đơn giản tại các địa chỉ một cách liên tục bất chấp kích thước của chúng

Bất chấp trạng thái định huớng của $A, mỗi phần khai báo Var hoặc Const toàn cục đều luôn bắt đầu ở địa chỉ tính theo word Tương tự, chương trình dịch luôn giữ con trỏ Stack theo đơn vị word bằng cách bố trí thêm một byte không sử dụng trong một khuôn Stack của các thủ tục nếu có yêu cầu

BOOLEAN EVALUATION

Trang 2

Cú pháp {$B+} hoặc {$B-}

Mặc định {$B+} tính biểu thức Boolean một cách đầy đủ

Kiểu Local

Ghi chú Định hướng $B chuyển trạng thái bật/tắt giữa hai mô hình

khác nhau của bộ mã sinh mã đối với các toán tử AND và

Trong trạng thái {$B+}, chương trình tạo ra mã để tính toán biểu thức Boolean một cách đầy đủ Điều này có nghĩa là mọi toán hạng của biểu thức Boolean của phép toán AND

và OR sẽ được bảo đảm là tính hết, thậm chí khi kết quả của toàn bộ biểu thức đã được biết, đã được tính xong Thí dụ với biểu thức:

(0 AND X) AND Y

luôn luôn bằng 0 với mọi X và Y Song với {$B+}, máy tính sẽ tính hết mọi phép toán trên, không nề hà lãng phí thời gian Trong trạng thái {$B-}, chương trình dịch tạo ra mã để tính nhanh biểu thức Boolean, nghĩa là quá trình tính biểu thức Boolean sẽ dừng lại ngay sau khi kết quả của biểu thức Boolean đã trở nên hiển nhiên, không cần phải tính thêm nữa

DEBUG IMFORMATION

Cú pháp {$D+} hoặc {$D-}

Mặc định {$D+} lập các thông tin gỡ rối

Kiểu Global

Ghi chú Định hướng dịch $D có thể thiết lập hoặc không thiết lập

các thông tin gỡ rối (debug) Thông tin này bao gồm bảng dòng đánh số cho mỗi thủ tục, nó ánh xạ địa chỉ mã với các số của dòng văn bản nguồn

Trang 3

Đối với các Unit, thông tin gỡ rối (debug) được ghi ở trong tệp TPU cùng với các mã OBJ của unit Thông tin gỡ rối làm tăng nhanh kích thước của các tệp TPU và bố trí thêm cả những chỗ khi dịch các chương trình có dùng unit, song nó

không làm ảnh hưởng tới kích thước cũng như tốc độ của

chương trình đã được dịch ra để chạy

Khi một chương trình hay một unit được dịch với {SD+}, bộ gỡ rối nằm trong môi trường khép kín IDE cho phép bạn chạy chương trình từng bước một (step by step) và thiết lập điểm dừng trong modun đó

Các lựa chọn Debug đứng một mình (Option| Debugger) và tệp bản đồ (Option| Linker) tạo ra các thông tin về dòng một cách đầy đủ đối với một modun đã cho chỉ khi bạn đã dịch modun đó với {$D+)

Định hướng $D thường được sử dụng để liên kết với định hướng $L là định hướng cho phép hoặc không cho phép việc tạo ra các thông tin về kí hiệu cục bộ để gỡ rối

Nếu bạn muốn sử dụng Turbo Debuger để gỡ rối chương trình của bạn, hãy thiết lập Compiler| Destination to Disk, sau đó chọn Option| Debugger và lựa chọn Standalone

EMULATION

Cú pháp {$E+} hoặc {$E-}

Mặc định {$E+}

Kiểu Global

Ghi chú Định hướng dịch $E thiết lập hay không việc kết nối với thư

viện thời gian thực và phỏng tạo bộ đồng sử lý số học 80x87 nếu như bộ đồng sử lý này không có trong máy

Khi bạn dịch một chương trình với {$N+, E+}, Turbo Pascal sẽ liên kết với một bộ phỏng tạo 80x87 đầy đủ Tệp EXE nhận được có thể được dùng trên mọi máy bất kể có bộ đồng xử lý trên máy hay không Nếu thấy co 80x87, Turbo Pascal sẽ sử dụng bộ đồng xử lý, còn nếu không thì thư viện thực sẽ phỏng tạo nó để chạy (lấy phần mềm thay cho phần cúng)

Trang 4

Trong trạng thái {$N+, E-}, Turbo Pascal tạo ra một chương trình chỉ có thể chạy được nếu như có bộ đồng xử lý số học Chuyển mạch bật/tắt bộ phỏng tạo cho 80x87 không đem lại kết quả nếu nó được sử dụng trong unit, nghĩa là nó chỉ được áp dụng cho việc dịch của một chương trình chính Thêm nữa nếu chương trình và tất cả các unit của chương trình được dịch với trạng thái {$N-} thì thư viện thời gian thực cho 80x87 không được yêu cầu và việc chuyển mạch cho bộ phỏng tạo 80x87 sẽ bị bỏ qua

EXTENDED SYNTAX

Cú pháp {$X+} hoặc {$X-}

Mặc định {$X+}

Kiểu Global

Ghi chú Định hướng dịch $X chuyển bật/tắt giữa cú pháp mở rộng

của Turbo Pascal

 Các câu lệnh hàm Trong chế độ {$X+}, các lời gọi hàm có

thể được thực hiện như một thủ tục, nghĩa là kết quả của một lời gọi hàm có thể được hủy bỏ Nói chung các tính toán được thực hiện bằng một hàm có thể được biểu diễn qua kết quả của nó, vì vậy việc hủy bỏ kết quả là một điều nhạy cảm nhỏ Tuy nhiên trong một số trường hợp, một hàm có thể thực hiện nhiều thao tác căn cứ vào tham số của nó, và một số trường hợp này lại không tạo ra những kết quả hữu ích Trong các trường hợp như thế, sự mở rộng {$X+} cho phép hàm được xử lý như là một thủ tục

 Các xâu kết thúc bằng kí tự Null Một định hướng dịch

{$A+} cho phép sự hổ trợ sử dụng các xâu Null bằng cách kích hoạt các quy tắc đặc biệt để áp dụng cho kiểu Pchar FORCE FAR CALLS

Cú pháp {$F+} hoặc {$F-}

Trang 5

Mặc định {$F-} tự động chọn cách gọi xa - gần

Kiểu Local

Ghi chú Định hướng dịch $F xác định kiểu gọi thủ tục và hàm sẽ

được áp dụng Các thủ tục và hàm được dịch trong trạng thái {$F+} luôn luôn sử dụng cách gọi xa (Far Call) Trong trạng thái {$F-},Turbo Pascal tự động chọn các mô hình thích hợp, nghĩa là gọi xa nếu thủ tục và hàm được khai báo trong phần Interface của một Unit, các trường hợp còn lại máy sẽ chọn cách gọi gần (Near Call)

GENERATE 80286 CODE

Cú pháp {$G+} hoặc {$G-}

Mặc định {$G-}

Kiểu Global

Ghi chú Định hướng $G chuyển trạng thái cho việc tạo hay không

tạo mã cho 80266 Trong trạng thái {$G-}, chỉ có các lệnh cho

8086 được tạo ra và chương trình được dịch ra trong trường hợp này có thể chạy trên mọi họ máy 80 x 86 Bạn có thể viết chỉ dẫn {$G-} ở bất kì chỗ trống nào trong chương trình của bạn

Trong trạng thái {$G+}, chương trình dịch dùng thêm các cấu trúc lệnh của 80286 để cải thiện việc tạo mã lệnh, song chương trình được dịch ra trong trạng thái này sẽ không thể chạy với các bộ vi xử lý 8088 và 8086 Các lệnh bổ sung thêm được sử dụng trong trạng thái {$G+} bao gồm: Enter, Push, Leave tức thời, IMUL mở rộng và SHR, SHL mở rộng

INPUT/OUTPUT CHECKING

Cú pháp {$I+} hoặc {$I-}

Mặc định {$I+}

Trang 6

Kiểu Local

Ghi chú Định hướng chuyển mạch bật/tắt cho phép tạo hoặc không

việc tạo mã tự động để kiểm tra kết quả một lời gọi thủ tục vào/ra Nếu thủ tục vào ra trả lại kết quả IOResult là khác 0 trong trạng thái {$I+}, chương trình sẽ tự động dừng lại với thông báo Runtime Error Trong trạng thái {$I-}, tức chuyển mạch này sang tắt (off), thì máy sẽ không thông báo lỗi và bạn phải tự kiểm tra lỗi vào/ra bằng lời gọi IOResult

LINK OBJECT FILE

Cú pháp {$L FileName}

Kiểu Local

Ghi chú Định hướng tham số $L chỉ dẫn cho chương trình dịch liên

kết tệp FileName với chương trình hoặc Unit đang được dịch Định hướng $L được dùng để liên kết mã chương trình được viết bằng hợp ngữ cho chương trình con được miêu tả External Tệp được đặt tên phải là moat tệp OBJ Nếu FileName không chỉ rõ đường dẫn thì nó sẽ tìm kiếm trong thư mục hiện hành, sau đó là trong thư mục được chỉ rõ trong hộp thoại Options| Directories| Object Directories

LOCAL SYMBO INFORMATION

Cú pháp {$L+} hay {$L-}

Mặc định {$L+}

Kiểu Local

Ghi chú Kí hiệu $L dùng để bật/tắt việc tạo ra thông tin kí hiệu cục

bộ Thông tin này bao gồm các tên và kiểu của tất cả các biến và hằng trong modun, nghĩa là các kí hiệu trong phần

Trang 7

Implementation của modun đó, và các kí hiệu bên trong các thủ tục và hàm của modun đó

Với Unit, thông tin hiệu cục bộ được ghi vào tệp TPU với mã đối tượng của Unit Thông tin kí hiệu cục bộ làm tăng kích thước tệp TPU và tạo thêm chỗ trống khi dịch chương trình dùng Unit đó, song nó không ảnh hưởng tới kích thước cũng như tốc độ của chương trình chạy cuối cùng

Khi một chương trình hay Unit được dịch với {$L+}, chương trình gỡ rối nằm trong Turbo Pascal cho phép bạn xem, kiểm tra và thay đổi các biến cục bộ của modun Thêm nữa, có thể kiểm tra lời gọi những thủ tục và hàm của modun qua View| Call Stack

Việc gỡ rối độc lập (Option| Debugger) và lựa chọn tệp bản đồ (Map File) với Option| Linker sẽ tạo ra thông tin kí hiệu địa phương cho modun chỉ nếu nó được dịch trong trạng thái {$L+}

Định hướng $L thường được dùng với định hướng $D là định hướng thiết lập hay không thiết lập việc tạo ra bảng đánh số dòng để gở rối.Định hướng $L bị bỏ qua nếu chương trình dịch đang trong trạng thái {$D-}

NUMERIC COPROCESSOR

Cú pháp {$N+} hoặc {$N-}

Mặc định {$N-}

Kiểu Local

Ghi chú Định hướng $N bật/tắt giữa hai chế độ khác nhau của việc

sinh mã dấu chấm động của Turbo Pascal Trong trạng thái {SN-}, mã được tạo ra để thực hiện mọi tính toán bằng số thực trong phần mềm bằng cách gọi tới thư viện thời gian thực Còn trong trạng thái {$N+}, mã được tạo ra để tính toán mọi kiểu số thực bằng bộ đồng xử lý toán học 80x87 OPEN STRING PARAMETER

Trang 8

Cú pháp {$P+} hoặc {$P-}

Mặc định {$P-}

Kiểu Local

Ghi chú Định hướng $P điều khiển ý nghĩa của tham biến được khai

báo với từ khóa String Trong trạng thái {$P-}, các tham biến được khai báo dùng từ khoá String là các tham biến bình thường nhưng trong trạng thái {$P+}, chúng là tham số String mở Không liên quan gì đến trạng thái thiết lập của

$P, tên OpenString luôn luôn được sử dụng để khai báo các tham số mở

OVERFLOW CHECKING

Cú pháp {$Q+} hoặc {$Q-}

Mặc định {$Q-}

Kiểu Local

Ghi chú Định hướng $Q điều khiển việc tạo mã để kiểm tra tràn

Trong trạng thái {$Q+}, một số lệnh toán học với số nguyên (+, -, *, /, Abs, Sqr, Succ, Pred) được kiểm tra xem có tràn không Mã của mỗi lệnh số nguyên được thêm một phần để kiểm tra xem kết quả có nằm trong khoảng giá trị cho phép Nếu gặp hiện tượng tràn nó sẽ dừng chương trình và báo lỗi {$Q+} không ảnh hưởng tới thủ tục chuẩn Dec và Inc

Những thủ tục này không bao giờ được kiểm tra tràn

Chuyển mạch $Q thường được dùng với chuyển mạch $R là chuyển mạch thiết lập hoặc không thiết lập việc tạo ra mã kiểm tra khoảng giá trị Việc kiểm tra tràn sẽ làm cho chương trình của bạn chạy chậm hơn và kích thước chương trình lớn hơn một chút Do đó chỉ nên dùng {$Q+} cho việc gỡ rối

OVERLAY CODE GENERATION

Trang 9

Cú pháp {$O+} hoặc {$O-}

Mặc định {$O-}

Kiểu Local

Ghi chú Định hướng $O dùng để bật/tắt việc tạo mã phủ Turbo

Pascal cho phép một Unit chỉ được phủ nếu nó đã được dịch với {$P+} Trong trạng thái này, bộ phận tạo mã có một số biện pháp ngăn ngừa đặc biệt khi chuyển tham số String và hằng tập từ một thủ tục hay hàm được phủ tới một thủ tục/hàm khác

Sử dụng {$O+} trong một Unit không bắt buộc bạn phải phủ Unit đó Nó chỉ hướng dẫn Turbo Pascal bảo đảm chắc rằng Unit đó có thể được phủ nếu bạn muốn Nếu bạn muốn phát triển các Unit để sau này cho các ứng dụng có phủ cũng như không phủ, việc dịch chúng với $O+ sẽ đảm bảo với bạn là bạn có thể tạo ra cả 2 phiên bản trong cùng một chương trình nguồn

Định hướng chương trình dịch {$O+} thường được dùng với định hướng {$F+} để thỏa mãn việc quản lý bao phủ cho những yêu cầu gọi xa

RANGE CHECKING

Cú pháp {$R+} hoặc {$R-}

Mặc định {$R-}

Kiểu Local

Ghi chú Định hướng $R dùng để bật/tắt việc tạo mã kiểm tra dải giá

trị, nghĩa là xem giá trị đó có nằm trong khoảng cho phép hay không Trong trạng thái {$R+}, tất cả các biểu thức mảng và chỉ số chuỗi đều được thẩm tra dải giá trị và tất cả các phép gán cho các biến vô hướng và biến khoảng con cũng đều được kiểm tra dải giá trị Nếu việc kiểm tra thấy sai, nó sẽ ngừng chương trình lại và thông báo lỗi

Trang 10

Nếu $R được bất, mọi lời gọi tới các hành vi ảo đều được kiểm tra đối với tình trạng khởi tạo của cá thể gọi Nếu cá thể gọi không được khởi tạo bằng Contructor của nó, máy sẽ báo lỗi kiểm tra giá trị

Bật kiểm tra dải giá trị và kiểm tra lời gọi hành vi ảo sẽ làm chậm chương trình của bạn và làm tăng kích thước của chương trình, vì vậy chỉ dùng {$R+} để gỡ rối

STACK-OVERFLOW CHECKING

Cú pháp {$S+} hoặc {$S-}

Mặc định {$S+}

Kiểu Local

Ghi chú Định hướng $S thiết lập hay không thiết lập việc tạo ra mã

kiểm tra tràn của Stack Trong trạng thái {$S+}, chương trình tạo ra mã ở đầu mỗi thủ tục hay hàm để kiểm tra xem không gian Stack có đủ để lưu trữ biến địa phương và các việc lưu trữ tạm thời khác Khi không đủ không gian Stack thì một lời gọi tới hàm hay thủ tục được dịch với {$S+} sẽ dẫn đến dừng chương trình và xuất hiện thông báo lỗi Trong trạng thái {$S-}, một lời gọi như vậy sẽ làm cho hệ thống bị hỏng

SYMBO REFERENCE

Cú pháp {$Y+} hoặc {$Y-}

Mặc định {$Y+}

Kiểu Local

Ghi chú Định hướng $Y dùng để bật/tắt việc tạo ra thông tin tham

khảo các kí hiệu Thông tin này bao gồm những bảng cung cấp số dòng của tất cả các khai báo, các kí hiệu và các tham khảo tới những kí hiệu trong một modun

Trang 11

Đối với Unit, thông tin tham khảo kí hiệu được ghi trong tệp TPU với mã đối tượng của Unit Thông tin tham khảo kí hiệu làm tăng kích thước của tệp TPU nhưng không ảnh hưởng tới tốc độ và kích thước của chương trình được dịch ra để chạy

Khi một chương trình hay một Unit được dịch với {$Y+}, bộ xem và duyệt của Turbo Pascal có thể hiển thị định nghĩa kí hiệu và thông tin tham khảo cho modun đó

$Y thường được dùng cùng với $D và$L, là các định hướng điều khiển việc tạo ra các thông tin gỡ rối và thông tin kí hiệu cục bộ Định hướng $Y không có tác dụng trừ khi cả hai

$D và $L được thiết lập

TYPE-CHECKING POINTERS

Cú pháp {$T+} hoặc {$T-}

Mặc định {$T-}

Kiểu Global

Ghi chú Định hướng $T điều khiển các kiểu dữ liệu con trỏ được tạo

ra từ toán tử @ Trong trạng thái {$T-}, kết quả của toán tử

@ luôn là con trỏ Nói cách khác kết quả là kiểu con trỏ không định kiểu sẽ tương thích với mọi kiểu con trỏ khác.Khi

@ được áp dụng cho một biến trong trạng thái {$T+}, kiểu của kết quả là ^T trong đó T là kiểu của biến Nói cách khác, kết quả là một kiểu chỉ tương thích với các con trỏ khác trỏ tới kiểu của biến

VAR-STRING CHECKING

Cú pháp {$V+} hoặc {$V-}

Mặc định {$V+}

Kiểu Local

Ngày đăng: 04/06/2014, 12:28

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w