Tôi biết dereferencing một con trỏ null là không xác định - nhưng tôi muốn biết những gì xảy ra trên một mục tiêu cụ thể - một MSP430.Trên MSP430, điều gì sẽ xảy ra khi tôi không quan tâm đến một con trỏ rỗng?
Tôi không có bảng để tải nó lên trước mặt mình để kiểm tra điều này ngay bây giờ.
Điều gì sẽ xảy ra nếu tôi thực hiện việc này (hoặc tương tự)?
int * foo = NULL;
(*foo)++; //Crash?
Vị trí 0x0 nằm trong phạm vi SFR và được đặt trước.
Nó có tạo ra PUC/POR không? Hoặc nó sẽ âm thầm "làm việc"?
Việc lắp ráp được tạo ra là
;int * foo = NULL;
clr.w R15
;(*foo)++;
inc.w R15
Vì vậy, vị trí 0x0 là nghĩa đen được tăng thêm 1.
Khi tôi chạy này trong mô phỏng tôi thấy giá trị tại địa chỉ 0x0 đi từ 0 đến 1. Tôi không có cảnh báo trong nhật ký gỡ lỗi và chương trình thoát bình thường.
Tôi đang sử dụng trình biên dịch/trình mô phỏng/trình mô phỏng IAR EW430.
Chỉ cần rõ ràng, bạn đang hỏi về hành vi được quan sát của hành vi không xác định; một thứ tự cao. Câu hỏi này sẽ không có ở đây nếu bạn có phần cứng * thực tế trong mits của bạn, đúng không? Và thậm chí sau đó, nó sẽ không phụ thuộc vào việc liệu một móc gián đoạn trọng hơn đã được cài đặt tại thời điểm vi phạm, mà sẽ phụ thuộc vào thời điểm cụ thể của nói như vậy? (hoặc bạn có * hoàn thành * kiểm soát tất cả các bên trên không?). – WhozCraig
@WhozCraig đúng. Trong một vỏ hạt tôi hỏi nếu msp430 sẽ tắt dữ dội khi 0x0 được đọc từ hoặc ghi vào hoặc nó vẫn tiếp tục hoạt động. Tôi dường như không thể tìm ra địa chỉ đó sẽ chứa gì. Có một ngắt mà bạn có thể thiết lập sẽ kích hoạt khi bộ nhớ "trống" ngoài phạm vi bình thường được truy cập, từ đó bạn có thể thực hiện một số ghi nhật ký về sự kiện nhưng tôi không nghĩ đó là một tùy chọn ở đây. Nhiều hơn hoặc ít hơn tôi hỏi về một cơ sở mã di sản khổng lồ không sử dụng xác nhận hoặc kiểm tra các thông số con trỏ trong giao diện.Địa chỉ – Nick
0,1 là các bit kích hoạt ngắt. Do đó tăng địa chỉ 0 từ giá trị 0 lên giá trị 1 sẽ cho phép một trong các ngắt. Chương trình sẽ tiếp tục chạy ngay. @ Nick, có bạn không đọc bảng kiến trúc cho msp430? Đặc tả kiến trúc có thể được tìm thấy tại: –
user3629249