-
24-08-2014, 04:14 PM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bản chất của các phép toán ( +, -, *, / )
Xin chào tất cả mọi người,
hiện mình đang có 1 thắc mắc nhỏ, bác nào biết xin vui lòng chỉ giúp.
Mình đang hỏi trong phạm vi nhúng nha.
Ví dụ mình có 3 biến:
// Phạm vi của short: 0x8000 ~ 0x7FFF
short a,b,c;
c = a + b;
Nếu a = 0x7FFF, b = 0x7FFF thì kết quả c nhận vào là 0xFFFE tức là -2 (bị overflow). Ý mình muốn hỏi ở đây là trước khi kết quả được gán về cho c (2byte) thì sẽ có 1 thanh ghi dùng để chứa kết quả của a+b. Vậy thanh ghi này là 2 byte hay 4 byte hay là lớn hơn???
Nếu được bác nào xin giải thích dùm cơ chế + trong nhúng không? Cách làm việc của các thanh ghi?
Xin cảm ơn nhiều.View more random threads:
- Game thử trí nhớ. Lỗi gì không biết nữa.
- Thắc mắc biết hỏi ai?!?
- Giúp mình tìm lỗi chương trình này
- Đọc ghi file nhị phân trong C++
- khi nào dùng %c khi nào dùng %s trong lệnh printf();
- unsigned là gì? sử dụng unsigned như thế nào?
- Vấn đề sắp xếp
- Bài tập C++ lập trình hướng đối tượng, ai có giúp mình?
- Khuôn Hình Lớp C++
- mong được giải thích về hàm khó hiểu này !
-
24-08-2014, 07:34 PM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chỉ có dịch ra ASM thì mới biết được thôi.
p/s: thanh ghi có thể truy cập bằng ASM, còn C compiler chỉ dịch ra ASM thôi [IMG]images/smilies/smile.png[/IMG]
-
26-08-2014, 03:12 PM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cảm ơn bạn đã góp ý. Ý mình muốn hỏi là:
Nói cụ thể hơn là:
long c;
short a,b;
c = a+b;
Nếu a là Maximum (tức a = 32767) và b là Maximum (tức b = 32767) thì kết quả của c sẽ là -2 (overflow) hay là 65534 (ko overflow)??
Thanks.
-
26-08-2014, 03:48 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
-2 nhóe.
Vì kết quả của phép cộng 2 số short phải là (signed) short (tức là -2), sau đó đc sign-extended vào long.
-
26-08-2014, 03:57 PM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình không còn theo ASM nữa, nhưng nói sơ qua như thế này, một phép cộng ( theo như ASM hiểu ở mức độ thanh ghi), nếu như có tràn số, thì thanh ghi cờ tràn sẽ được bật.
Nói tới đây có thể bạn đã hiểu là ngoài các thanh ghi đa dụng, CPU còn bao gồm hàng loạt thanh ghi khác nữa.
Tràn số học thuộc về trách nhiệm của người lập trình, sử dụng cờ tràn hay không là theo phép toán mà bạn muốn.
Nói sau cùng, kết quả là một số âm nào đó hay là một giới hạn 65535 là tùy theo chương trình bạn nghĩ nó là số âm đó hay là giới hạn 65535 đều được.
Nếu bạn muốn hiểu kỹ hơn, hãy tìm hiểu ở các tài liệu lập trình hệ thống với ASM (đề tài số bù 1).
xã hội vững mạnh, nhu cầu mặc đẹp của con người ngày càng cao. ngành công nghiệp thời trang cũng đang vững mạnh chóng vánh. những nhà máy gia công hàng may mặc chẳng thể đóng góp lặng thầm vào sự...
Tìm xưởng may gia công tại TP Hồ...