2012-03-22 13 views
7

Tôi đang sử dụng GDB để tải tệp thực thi trên thiết bị được nhúng. Khi tải tệp thực thi, GDB cho biết:Sự khác biệt giữa "bộ đếm chương trình" và "địa chỉ bắt đầu"

xPSR: 0x01000000 pc: 0xf0094902 msp: 0x2001b508 
Loading section .text, size 0x16240 lma 0x8000000 
Loading section .data, size 0x8f0 lma 0x8016240 
Start address 0x8000000, load size 92976 

Như tôi đã hiểu, pc là con trỏ chỉ dẫn. Tôi giả định rằng "địa chỉ bắt đầu" là địa chỉ bắt đầu cho số pc. Tuy nhiên, trong thông tin GDB cung cấp cho tôi, địa chỉ xuất phát (0x8000000, tình cờ giống như .text) là không phải giống như pc (0xf0094902).

Sự khác biệt giữa pc và địa chỉ bắt đầu là gì? Có ý nghĩa để có địa chỉ bắt đầu giống như .text không?

+0

Sau khi tải, hãy thử 'thanh ghi thông tin 'và kiểm tra giá trị * pc *. Tôi nghi ngờ @dwelch là đúng. Các thanh ghi sẽ chỉ có một cái gì đó có ý nghĩa với ứng dụng của bạn sau khi bạn thực thi 'run' trên GDB. – karlphillip

Trả lời

3

"Địa chỉ bắt đầu" được đề cập ở đây là sự bắt đầu của hình ảnh nhị phân, không phải là địa chỉ bắt đầu thực hiện. Địa chỉ bắt đầu để thực thi là bất kỳ thứ gì được giữ trong vectơ đặt lại (giả sử bạn đang sử dụng Cortex-M3 như trước đây).

5

Tôi giả định bộ đếm chương trình là giá trị hiện tại sau khi bạn đã tải nhưng trước khi bạn bắt đầu chạy. Khi bạn bắt đầu chạy, sau đó tùy thuộc vào bộ xử lý tất nhiên, nhưng nó rất có thể mô tả địa chỉ để bắt đầu thực thi mã đã tải đó, địa chỉ để đặt bộ đếm chương trình trước khi cho phép bộ xử lý chạy lại. Nếu bạn chạy sau đó dừng lại nhanh chóng, bạn sẽ thấy điều gì đó trong phạm vi .text cho máy tính 0x80000000 + 0x16240

+0

Tôi đặt cược rằng bắt đầu PC là một nơi nào đó trong bộ nạp khởi động ROM. – blueshift

1

Wikipedia: "Tùy thuộc vào chi tiết của máy tính cụ thể, PC hoặc IP giữ địa chỉ bộ nhớ của lệnh được thực hiện hoặc địa chỉ của lệnh tiếp theo sẽ được thực hiện. " Tôi không thể chắc chắn, nhưng có thể đang giữ lệnh tiếp theo để thực thi.

CHỈNH SỬA:

Bạn có thể tìm thấy câu trả lời chính xác về kiểm tra tài liệu xử lý của bạn. Ví dụ, trong bộ điều khiển vi mô MSP430, điều kiện ban đầu cho PC là địa chỉ cho vectơ đặt lại. Vì vậy, hãy kiểm tra tài liệu xử lý của bạn để tìm các điều kiện ban đầu của thanh ghi.

+1

Nó thay đổi từ bộ vi xử lý đến bộ vi xử lý, đặc biệt là chế độ xem lập trình của giá trị có thể có một định nghĩa trong đó phần cứng có thể có nhiều bản sao để tìm nạp, một bản để người lập trình sử dụng, v.v. thường được ghi lại cho mỗi bộ xử lý. –

+0

Bạn hoàn toàn đúng. – LuisEspinoza