OSDev.org https://forum.osdev.org/ |
|
Unsigned addition really performs subtraction. https://forum.osdev.org/viewtopic.php?f=1&t=47734 |
Page 1 of 1 |
Author: | wireboy5 [ Thu Jul 29, 2021 8:29 pm ] |
Post subject: | Unsigned addition really performs subtraction. |
I am working on finding out the physical address range that I need to add to my page tables to access the provided framebuffer. When I add the size of the framebuffer (Which I calculated as pitch * height) to the address of the framebuffer, the result appears to be a subtraction instead. The calculated size of my framebuffer is 0x384000 bytes, and GRUB says that the start address is at 0x40000000. However, when I add these two numbers, I get 0x3fc7c000. My first thought was that I was (somehow) getting a negative number for the size of my framebuffer (Or, at least the sign bit was set because of the multiplication result being large enough.) however, both my integers are `unsigned long long`and `unsigned long`, and I even checked with (x & (1 << 63)) and the sign bits are not set on either. Even if the sign bits are set, they should not be added as a signed integer. What do you guys think is going on here? Am I doing something wrong? This is the github repo: https://github.com/wireboy5/64bitOS Thank's for your consideration! |
Author: | Octocontrabass [ Thu Jul 29, 2021 9:14 pm ] |
Post subject: | Re: Unsigned addition really performs subtraction. |
You're converting the number to signed int before printing it. |
Author: | alexfru [ Thu Jul 29, 2021 11:57 pm ] |
Post subject: | Re: Unsigned addition really performs subtraction. |
wireboy5 wrote: 1 << 63 Also, you likely want 1ULL << 63. |
Author: | wireboy5 [ Fri Jul 30, 2021 12:22 pm ] |
Post subject: | Re: Unsigned addition really performs subtraction. |
Thank you guys! That was probably the silliest mistake I have made in a while. At least I have learned something though: Always check your debugging methods. Thanks again! |
Page 1 of 1 | All times are UTC - 6 hours |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |