Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #19747 > unrolled thread
| Started by | "sl@exabyte" <sb5309@hotmail.com> |
|---|---|
| First post | 2012-11-14 21:58 +0800 |
| Last post | 2012-11-14 20:08 +0100 |
| Articles | 20 — 11 participants |
Back to article view | Back to comp.lang.java.programmer
Program in 32-bit, run on 64-bit OK? "sl@exabyte" <sb5309@hotmail.com> - 2012-11-14 21:58 +0800
Re: Program in 32-bit, run on 64-bit OK? "sl@exabyte" <sb5309@hotmail.com> - 2012-11-14 22:01 +0800
Re: Program in 32-bit, run on 64-bit OK? Arne Vajhøj <arne@vajhoej.dk> - 2012-11-14 09:12 -0500
Re: Program in 32-bit, run on 64-bit OK? Cholo Lennon <chololennon@hotmail.com> - 2012-11-14 14:11 -0300
Re: Program in 32-bit, run on 64-bit OK? Arne Vajhøj <arne@vajhoej.dk> - 2012-11-14 12:14 -0500
Re: Program in 32-bit, run on 64-bit OK? Joerg Meier <joergmmeier@arcor.de> - 2012-11-14 18:36 +0100
Re: Program in 32-bit, run on 64-bit OK? "sl@exabyte" <sb5309@hotmail.com> - 2012-11-15 10:48 +0800
Re: Program in 32-bit, run on 64-bit OK? Stuart <DerTopper@web.de> - 2012-11-16 00:08 +0100
Re: Program in 32-bit, run on 64-bit OK? "SL@maxis" <ecp_gen@my-rialto.com> - 2012-11-16 09:23 +0800
Re: Program in 32-bit, run on 64-bit OK? BGB <cr88192@hotmail.com> - 2012-11-15 22:52 -0600
Re: Program in 32-bit, run on 64-bit OK? Fritz Wuehler <fritz@spamexpire-201211.rodent.frell.theremailer.net> - 2012-11-16 16:44 +0100
Re: Program in 32-bit, run on 64-bit OK? Joerg Meier <joergmmeier@arcor.de> - 2012-11-17 13:18 +0100
Re: Program in 32-bit, run on 64-bit OK? BGB <cr88192@hotmail.com> - 2012-11-17 12:42 -0600
Re: Program in 32-bit, run on 64-bit OK? BGB <cr88192@hotmail.com> - 2012-11-15 22:46 -0600
Re: Program in 32-bit, run on 64-bit OK? Stuart <DerTopper@web.de> - 2012-11-16 12:08 +0100
Re: Program in 32-bit, run on 64-bit OK? BGB <cr88192@hotmail.com> - 2012-11-16 18:08 -0600
Re: Program in 32-bit, run on 64-bit OK? Stuart <DerTopper@web.de> - 2012-11-17 23:59 +0100
Re: Program in 32-bit, run on 64-bit OK? Anonymous <nobody@remailer.paranoici.org> - 2012-11-16 12:42 +0000
Re: Program in 32-bit, run on 64-bit OK? Roedy Green <see_website@mindprod.com.invalid> - 2012-11-16 05:17 -0800
Re: Program in 32-bit, run on 64-bit OK? Jan Burse <janburse@fastmail.fm> - 2012-11-14 20:08 +0100
| From | "sl@exabyte" <sb5309@hotmail.com> |
|---|---|
| Date | 2012-11-14 21:58 +0800 |
| Subject | Program in 32-bit, run on 64-bit OK? |
| Message-ID | <k8082k$fmr$1@news.albasani.net> |
I am too sure on this. I am preparing to install OpenSuse v10 32-bit on my pc. This pc is for testing my C programs, which will eventually be transferred to my internet host which is running the 64-bit version. Can my programs run ? Off my head I think they should, but the reverse may not. Please correct me. Do I have to pick the correct compiler ? Thanks.
[toc] | [next] | [standalone]
| From | "sl@exabyte" <sb5309@hotmail.com> |
|---|---|
| Date | 2012-11-14 22:01 +0800 |
| Message-ID | <k8087v$g88$1@news.albasani.net> |
| In reply to | #19747 |
sl@exabyte wrote: > I am too sure on this. > > I am preparing to install OpenSuse v10 32-bit on my pc. This pc is for > testing my C programs, which will eventually be transferred to my > internet host which is running the 64-bit version. > Sorry Java and C programs (I think I need not post it to the C/C++ group).
[toc] | [prev] | [next] | [standalone]
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2012-11-14 09:12 -0500 |
| Message-ID | <50a3a6ea$0$290$14726298@news.sunsite.dk> |
| In reply to | #19747 |
On 11/14/2012 8:58 AM, sl@exabyte wrote:
> I am too sure on this.
>
> I am preparing to install OpenSuse v10 32-bit on my pc. This pc is for
> testing my C programs, which will eventually be transferred to my internet
> host which is running the 64-bit version.
>
> Can my programs run ?
>
> Off my head I think they should, but the reverse may not. Please correct me.
>
> Do I have to pick the correct compiler ?
Pure Java:
Run with 32 Run with 64
Build with 32 yes yes
Build with 64 yes yes
Pure C:
Run on 32 Run on 64
Build for 32 yes yes
Build for 64 no yes
Mix of Java and C via JNI:
Run on/with 32 Run on/with 64
Build for 32 yes no
Build for 64 no yes
Arne
[toc] | [prev] | [next] | [standalone]
| From | Cholo Lennon <chololennon@hotmail.com> |
|---|---|
| Date | 2012-11-14 14:11 -0300 |
| Message-ID | <k80j5b$o67$1@speranza.aioe.org> |
| In reply to | #19749 |
On 14/11/2012 11:12, Arne Vajhøj wrote: > On 11/14/2012 8:58 AM, sl@exabyte wrote: >> I am too sure on this. >> >> I am preparing to install OpenSuse v10 32-bit on my pc. This pc is for >> testing my C programs, which will eventually be transferred to my >> internet >> host which is running the 64-bit version. >> >> Can my programs run ? >> >> Off my head I think they should, but the reverse may not. Please >> correct me. >> >> Do I have to pick the correct compiler ? > > Pure Java: > > Run with 32 Run with 64 > Build with 32 yes yes > Build with 64 yes yes > > > Pure C: > > Run on 32 Run on 64 > Build for 32 yes yes > Build for 64 no yes > > Mix of Java and C via JNI: > > Run on/with 32 Run on/with 64 > Build for 32 yes no The OP can still run a 32-bit JNI java/C application on 64-bit: He/She just needs to use a 32-bit JVM. > Build for 64 no yes > Best Regards -- Cholo Lennon Bs.As. ARG
[toc] | [prev] | [next] | [standalone]
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2012-11-14 12:14 -0500 |
| Message-ID | <50a3d194$0$289$14726298@news.sunsite.dk> |
| In reply to | #19750 |
On 11/14/2012 12:11 PM, Cholo Lennon wrote: > On 14/11/2012 11:12, Arne Vajhøj wrote: >> On 11/14/2012 8:58 AM, sl@exabyte wrote: >>> I am too sure on this. >>> >>> I am preparing to install OpenSuse v10 32-bit on my pc. This pc is for >>> testing my C programs, which will eventually be transferred to my >>> internet >>> host which is running the 64-bit version. >>> >>> Can my programs run ? >>> >>> Off my head I think they should, but the reverse may not. Please >>> correct me. >>> >>> Do I have to pick the correct compiler ? >> >> Pure Java: >> >> Run with 32 Run with 64 >> Build with 32 yes yes >> Build with 64 yes yes >> >> >> Pure C: >> >> Run on 32 Run on 64 >> Build for 32 yes yes >> Build for 64 no yes >> >> Mix of Java and C via JNI: >> >> Run on/with 32 Run on/with 64 >> Build for 32 yes no > > The OP can still run a 32-bit JNI java/C application on 64-bit: He/She > just needs to use a 32-bit JVM. Yes. What do you think "with 64" meant? >> Build for 64 no yes Arne
[toc] | [prev] | [next] | [standalone]
| From | Joerg Meier <joergmmeier@arcor.de> |
|---|---|
| Date | 2012-11-14 18:36 +0100 |
| Message-ID | <1ime9q5hlhcfs.x8wnfo60hr9g$.dlg@40tude.net> |
| In reply to | #19751 |
On Wed, 14 Nov 2012 12:14:56 -0500, Arne Vajhøj wrote: > On 11/14/2012 12:11 PM, Cholo Lennon wrote: >> On 14/11/2012 11:12, Arne Vajhøj wrote: >>> On 11/14/2012 8:58 AM, sl@exabyte wrote: >>>> I am preparing to install OpenSuse v10 32-bit on my pc. This pc is for >>>> testing my C programs, which will eventually be transferred to my >>>> internet >>>> host which is running the 64-bit version. >>>> Can my programs run ? >>> Mix of Java and C via JNI: >>> Run on/with 32 Run on/with 64 >>> Build for 32 yes no >> >> The OP can still run a 32-bit JNI java/C application on 64-bit: He/She >> just needs to use a 32-bit JVM. > Yes. > What do you think "with 64" meant? The answer to the OPs question - can a program compiled on 32 bit SuSE run on 64 bit SuSE. To which your answer would be wrong, because you addressed whether or not it would run on the 64-bit-VM, but there is no reason to assume his "internet host" would be incapable of also running a 32-bit-VM. Unless I missunderstand how Java and JNI works - are you saying a 64-bit-OS is incapable of running 32-bit-JNI programs, even with a 32-bit-VM ? In other words, it seems like you answered a different question than the OP wanted the answer for. Liebe Gruesse, Joerg -- Ich lese meine Emails nicht, replies to Email bleiben also leider ungelesen.
[toc] | [prev] | [next] | [standalone]
| From | "sl@exabyte" <sb5309@hotmail.com> |
|---|---|
| Date | 2012-11-15 10:48 +0800 |
| Message-ID | <k81l6c$oh3$1@news.albasani.net> |
| In reply to | #19752 |
Joerg Meier wrote: > > The answer to the OPs question - can a program compiled on 32 bit > SuSE run on 64 bit SuSE. To which your answer would be wrong, because > you addressed whether or not it would run on the 64-bit-VM, but there > is no reason to assume his "internet host" would be incapable of also > running a 32-bit-VM. > > Unless I missunderstand how Java and JNI works - are you saying a > 64-bit-OS is incapable of running 32-bit-JNI programs, even with a > 32-bit-VM ? > > In other words, it seems like you answered a different question than > the OP wanted the answer for. > It seems there are more than I have asked. I don't know what JVM is the host running, it just states OpenSuse v11 64-bit, and I just suppose it is JVM 64-bit. And I suppose only hardware with 64-bit address bus can run 64-bit OS.
[toc] | [prev] | [next] | [standalone]
| From | Stuart <DerTopper@web.de> |
|---|---|
| Date | 2012-11-16 00:08 +0100 |
| Message-ID | <k83sma$3qm$1@dont-email.me> |
| In reply to | #19759 |
On 11/15/12 sl@exabyte wrote: [snip] > And I suppose only hardware with 64-bit address bus can run 64-bit OS. Wrong. Typical 64 bit processors have either a 36 bit or a 40 bit physical address bus (40 bits are 1 TB, an almost incredible amount of RAM, wikipedia mentions that some AMD chips even offer a 48 bit memory bus). Note that bus width and register width do not have to have a one-to-one relationship. The early 286 processor had a register width of 16 bits but an address bus with 24 bits (4MB), so they had to invent this segmentation model in order to compute a 20bit address from two 16 bit registers. Twenty years later, the segmenation unit is still present at the Intel architecture while the numbers have been reversed: now the 36 or 40 bit physical address is computed from a 16 bit value and a 64 bit value. Sounds like overkill, and yes, it is. That's just for backwards compatibility for applications from 1985. Regards, Stuart
[toc] | [prev] | [next] | [standalone]
| From | "SL@maxis" <ecp_gen@my-rialto.com> |
|---|---|
| Date | 2012-11-16 09:23 +0800 |
| Message-ID | <op.wnud4yrfwv4027@sl-home> |
| In reply to | #19760 |
On Fri, 16 Nov 2012 07:08:58 +0800, Stuart <DerTopper@web.de> wrote: > > Wrong. Typical 64 bit processors have either a 36 bit or a 40 bit > physical address bus (40 bits are 1 TB, an almost incredible amount of > RAM, wikipedia mentions that some AMD chips even offer a 48 bit memory > bus). Note that bus width and register width do not have to have a > one-to-one relationship. The early 286 processor had a register width of > 16 bits but an address bus with 24 bits (4MB), so they had to invent > this segmentation model in order to compute a 20bit address from two 16 > bit registers. Twenty years later, the segmenation unit is still present > at the Intel architecture while the numbers have been reversed: now the > 36 or 40 bit physical address is computed from a 16 bit value and a 64 > bit value. Sounds like overkill, and yes, it is. That's just for > backwards compatibility for applications from 1985. > > Regards, > Stuart Thanks. I am not too sure now :-( I have an old Intel Pentium 4 1500Mhz PC. Can it run 64-bit OS ? -- Using Opera's revolutionary email client: http://www.opera.com/mail/
[toc] | [prev] | [next] | [standalone]
| From | BGB <cr88192@hotmail.com> |
|---|---|
| Date | 2012-11-15 22:52 -0600 |
| Message-ID | <k84h0k$55r$1@news.albasani.net> |
| In reply to | #19761 |
On 11/15/2012 7:23 PM, SL@maxis wrote: > On Fri, 16 Nov 2012 07:08:58 +0800, Stuart <DerTopper@web.de> wrote: > >> >> Wrong. Typical 64 bit processors have either a 36 bit or a 40 bit >> physical address bus (40 bits are 1 TB, an almost incredible amount of >> RAM, wikipedia mentions that some AMD chips even offer a 48 bit memory >> bus). Note that bus width and register width do not have to have a >> one-to-one relationship. The early 286 processor had a register width >> of 16 bits but an address bus with 24 bits (4MB), so they had to >> invent this segmentation model in order to compute a 20bit address >> from two 16 bit registers. Twenty years later, the segmenation unit is >> still present at the Intel architecture while the numbers have been >> reversed: now the 36 or 40 bit physical address is computed from a 16 >> bit value and a 64 bit value. Sounds like overkill, and yes, it is. >> That's just for backwards compatibility for applications from 1985. >> >> Regards, >> Stuart > > Thanks. I am not too sure now :-( > > I have an old Intel Pentium 4 1500Mhz PC. Can it run 64-bit OS ? > > it may or may not run 64-bits (depending on the specific core it has), you would have to test and see if it does or not. one way to test easily would be to get a Linux live-cd for x86-64. if it boots up, the CPU does 64-bit, and if it refuses to boot up with an error message about the type of CPU, then the CPU doesn't support it.
[toc] | [prev] | [next] | [standalone]
| From | Fritz Wuehler <fritz@spamexpire-201211.rodent.frell.theremailer.net> |
|---|---|
| Date | 2012-11-16 16:44 +0100 |
| Message-ID | <6884bfa9e1d6b09fa2650bcb1539dd19@msgid.frell.theremailer.net> |
| In reply to | #19761 |
"SL@maxis" <ecp_gen@my-rialto.com> wrote: > On Fri, 16 Nov 2012 07:08:58 +0800, Stuart <DerTopper@web.de> wrote: > > > > > Wrong. Typical 64 bit processors have either a 36 bit or a 40 bit > > physical address bus (40 bits are 1 TB, an almost incredible amount of > > RAM, wikipedia mentions that some AMD chips even offer a 48 bit memory > > bus). Note that bus width and register width do not have to have a > > one-to-one relationship. The early 286 processor had a register width of > > 16 bits but an address bus with 24 bits (4MB), so they had to invent > > this segmentation model in order to compute a 20bit address from two 16 > > bit registers. Twenty years later, the segmenation unit is still present > > at the Intel architecture while the numbers have been reversed: now the > > 36 or 40 bit physical address is computed from a 16 bit value and a 64 > > bit value. Sounds like overkill, and yes, it is. That's just for > > backwards compatibility for applications from 1985. > > > > Regards, > > Stuart > > Thanks. I am not too sure now :-( > > I have an old Intel Pentium 4 1500Mhz PC. Can it run 64-bit OS ? No standard 64 bit OS will run on a P4.
[toc] | [prev] | [next] | [standalone]
| From | Joerg Meier <joergmmeier@arcor.de> |
|---|---|
| Date | 2012-11-17 13:18 +0100 |
| Message-ID | <nnp59gwi1ohi.lrmv72znwfee$.dlg@40tude.net> |
| In reply to | #19768 |
On Fri, 16 Nov 2012 16:44:15 +0100, Fritz Wuehler wrote: > No standard 64 bit OS will run on a P4. I assure you both a default Windows XP 64 Bit CD and well as a defaul Linux 64 Bit CD ran perfectly fine on my old P4 before it was finally retired. Nothing special was needed. Liebe Gruesse, Joerg -- Ich lese meine Emails nicht, replies to Email bleiben also leider ungelesen.
[toc] | [prev] | [next] | [standalone]
| From | BGB <cr88192@hotmail.com> |
|---|---|
| Date | 2012-11-17 12:42 -0600 |
| Message-ID | <k88m0l$pk0$1@news.albasani.net> |
| In reply to | #19772 |
On 11/17/2012 6:18 AM, Joerg Meier wrote: > On Fri, 16 Nov 2012 16:44:15 +0100, Fritz Wuehler wrote: > >> No standard 64 bit OS will run on a P4. > > I assure you both a default Windows XP 64 Bit CD and well as a defaul Linux > 64 Bit CD ran perfectly fine on my old P4 before it was finally retired. > Nothing special was needed. > the issue is that "P4" covers a fairly wide-range of hardware, where some of the early hardware under the P4 name did not include 64-bit support, they enabled it for later cores. so, it depends on which core it has, for example, a P4 with a Willamette or Northwood core will not have 64-bit support, but a P4 with a Prescott or Cedar Mill core will have 64-bit support. granted, an issue with some earlier computers with 64-bit support was that, even if the CPU supports it, sometimes the MOBO would not, or would not operate reliably in 64-bit mode. for example, I had a computer with a ClawHammer core running on a MOBO using Socket-754 (built around early/mid 2004), and although a plenty usable computer, it did not run reliably in 64-bit mode.
[toc] | [prev] | [next] | [standalone]
| From | BGB <cr88192@hotmail.com> |
|---|---|
| Date | 2012-11-15 22:46 -0600 |
| Message-ID | <k84gkt$mr0$1@news.albasani.net> |
| In reply to | #19760 |
On 11/15/2012 5:08 PM, Stuart wrote: > On 11/15/12 sl@exabyte wrote: > [snip] >> And I suppose only hardware with 64-bit address bus can run 64-bit OS. > > Wrong. Typical 64 bit processors have either a 36 bit or a 40 bit > physical address bus (40 bits are 1 TB, an almost incredible amount of > RAM, wikipedia mentions that some AMD chips even offer a 48 bit memory > bus). Note that bus width and register width do not have to have a > one-to-one relationship. The early 286 processor had a register width of > 16 bits but an address bus with 24 bits (4MB), so they had to invent > this segmentation model in order to compute a 20bit address from two 16 > bit registers. Twenty years later, the segmenation unit is still present > at the Intel architecture while the numbers have been reversed: now the > 36 or 40 bit physical address is computed from a 16 bit value and a 64 > bit value. Sounds like overkill, and yes, it is. That's just for > backwards compatibility for applications from 1985. > corrections: 24 bits is 16MB (because 2^24 = 16777216), this bus size was used by both the 286 and 386SX (the 386DX and 486 used full 32-bits); the segments:offset -> 20 bit address thing was there since the 8086, which could only address 1MB of RAM (in contrast to 64kB on the 8080); on current 64-bit chips, the segmentation is also non-functional in 64 bit mode with the partial exception of the FS and GS segments (used mostly for implementing TLS and similar). (so, while the segment registers are still present, they don't really do all that much anymore). in effect, the chip is using a 64-bit flat address model, but may remap the addresses mostly through the use of page-based address translation (which maps from the program's virtual address space to the physical/RAM address space). yes, the CPU has backwards compatibility, but it actually involves a fair amount of mode-changing (as control is passed from one program to another, the CPU mode changes), but there are limits to this. however, real-mode software (IOW: most of the software from 1985) can't actually run on the CPU if it is running in "long mode", so it actually requires use of either hardware emulation or virtualization to make this work (for example, DOSbox does emulation, and VMware does virtualization). as-is, about the oldest software that can be run directly in modern Windows is roughly mid-to-late 90s era software (IOW: from when the world moved solidly over to 32 bits), although the hardware can technically still support running 16-bit protected-mode software in long-mode (theoretically, MS could have made Win3.x apps work without emulation, had they wanted to do so...). or such...
[toc] | [prev] | [next] | [standalone]
| From | Stuart <DerTopper@web.de> |
|---|---|
| Date | 2012-11-16 12:08 +0100 |
| Message-ID | <k856qm$aab$1@dont-email.me> |
| In reply to | #19762 |
On 11/15/2012 5:08 PM, Stuart wrote: [snip] >> The early 286 processor had a register width of >> 16 bits but an address bus with 24 bits (4MB), so they had to invent >> this segmentation model in order to compute a 20bit address from two 16 >> bit registers. On 11/16/12 5:46 BGB wrote: > corrections: > 24 bits is 16MB (because 2^24 = 16777216), this bus size was used by > both the 286 and 386SX (the 386DX and 486 used full 32-bits); > the segments:offset -> 20 bit address thing was there since the 8086, > which could only address 1MB of RAM (in contrast to 64kB on the 8080); > on current 64-bit chips, the segmentation is also non-functional in 64 > bit mode with the partial exception of the FS and GS segments (used > mostly for implementing TLS and similar). Gosh, I got it all mixed up. Of course 24 bits is 16MB. I can't say where my brain got the number 4MB from, probably because most 286 boards could only handle 4MBs of memory at that time. Or was that only for EMS modules? > (so, while the segment registers are still present, they don't really do > all that much anymore). I don't know. As far as I can see it, it should still be possible under a 64 bit processor to set up segment based memory protection using call gates and such, so all the privilege level checking stuff should still be present in 64 bit CPUs (albeit noone uses it anymore). > in effect, the chip is using a 64-bit flat address model, but may remap > the addresses mostly through the use of page-based address translation > (which maps from the program's virtual address space to the physical/RAM > address space). > > yes, the CPU has backwards compatibility, but it actually involves a > fair amount of mode-changing (as control is passed from one program to > another, the CPU mode changes), but there are limits to this. > > however, real-mode software (IOW: most of the software from 1985) can't > actually run on the CPU if it is running in "long mode", so it actually > requires use of either hardware emulation or virtualization to make this > work (for example, DOSbox does emulation, and VMware does virtualization). > > as-is, about the oldest software that can be run directly in modern > Windows is roughly mid-to-late 90s era software (IOW: from when the > world moved solidly over to 32 bits), although the hardware can > technically still support running 16-bit protected-mode software in > long-mode (theoretically, MS could have made Win3.x apps work without > emulation, had they wanted to do so...). Um, does that mean that I can no longer install DOS on a modern 64 bit PC? Not so long ago I bought a HP laptop without an OS (planned to run Linux on it). It shipped with FreeDOS. Awesome. Reminded me of the good old times when we messed with the LAN cards of four PCs for hours just to be able to play Doom2 on Christmas Eve. Regards, Stuart
[toc] | [prev] | [next] | [standalone]
| From | BGB <cr88192@hotmail.com> |
|---|---|
| Date | 2012-11-16 18:08 -0600 |
| Message-ID | <k86koj$3bb$1@news.albasani.net> |
| In reply to | #19764 |
On 11/16/2012 5:08 AM, Stuart wrote: > On 11/15/2012 5:08 PM, Stuart wrote: > [snip] >>> The early 286 processor had a register width of >>> 16 bits but an address bus with 24 bits (4MB), so they had to invent >>> this segmentation model in order to compute a 20bit address from two 16 >>> bit registers. > > On 11/16/12 5:46 BGB wrote: >> corrections: >> 24 bits is 16MB (because 2^24 = 16777216), this bus size was used by >> both the 286 and 386SX (the 386DX and 486 used full 32-bits); >> the segments:offset -> 20 bit address thing was there since the 8086, >> which could only address 1MB of RAM (in contrast to 64kB on the 8080); >> on current 64-bit chips, the segmentation is also non-functional in 64 >> bit mode with the partial exception of the FS and GS segments (used >> mostly for implementing TLS and similar). > > Gosh, I got it all mixed up. Of course 24 bits is 16MB. I can't say > where my brain got the number 4MB from, probably because most 286 boards > could only handle 4MBs of memory at that time. Or was that only for EMS > modules? > can't really say there. the motherboards may have set smaller limits, given that was a fairly large amount of memory at the time. >> (so, while the segment registers are still present, they don't really do >> all that much anymore). > > I don't know. As far as I can see it, it should still be possible under > a 64 bit processor to set up segment based memory protection using call > gates and such, so all the privilege level checking stuff should still > be present in 64 bit CPUs (albeit noone uses it anymore). > yes, things like gates and interrupts still work, just you can't use segmented addressing with 64-bit code (as in, the part where the segment base address is added to the virtual address to get another address). in 32-bit mode, the segments could still do this, just 32-bit OS's didn't really bother to do so (it was much more convenient simply to use a single large flat 4GB address space). basically, if all the segment registers really do is give things like the operating mode and protection-level, and are basically set up by the OS and largely ignored by code, this isn't really doing a whole lot. FWIW: they could at this point almost just as easily remove segmentation entirely, and application software wouldn't really notice (although the OS would notice). the partial exception here was FS and GS, which operating systems use for accessing TLS variables and similar. these segments are handled specially by the processor. >> in effect, the chip is using a 64-bit flat address model, but may remap >> the addresses mostly through the use of page-based address translation >> (which maps from the program's virtual address space to the physical/RAM >> address space). >> >> yes, the CPU has backwards compatibility, but it actually involves a >> fair amount of mode-changing (as control is passed from one program to >> another, the CPU mode changes), but there are limits to this. >> >> however, real-mode software (IOW: most of the software from 1985) can't >> actually run on the CPU if it is running in "long mode", so it actually >> requires use of either hardware emulation or virtualization to make this >> work (for example, DOSbox does emulation, and VMware does >> virtualization). >> >> as-is, about the oldest software that can be run directly in modern >> Windows is roughly mid-to-late 90s era software (IOW: from when the >> world moved solidly over to 32 bits), although the hardware can >> technically still support running 16-bit protected-mode software in >> long-mode (theoretically, MS could have made Win3.x apps work without >> emulation, had they wanted to do so...). > > Um, does that mean that I can no longer install DOS on a modern 64 bit > PC? Not so long ago I bought a HP laptop without an OS (planned to run > Linux on it). It shipped with FreeDOS. Awesome. Reminded me of the good > old times when we messed with the LAN cards of four PCs for hours just > to be able to play Doom2 on Christmas Eve. > the CPU will still run DOS, just not while running in "Long Mode". this means you can still install DOS and Win9x on the computer, and they will work as before. but, if you boot up a 64-bit OS, then this OS can no longer run any DOS code (unless it switches back out of long-mode, but it would be fairly complicated and expensive to make an OS which does this). basically, a way of thinking about it is that the CPU has several major operating modes: Real-Mode (AKA: "Legacy Mode"); Protected-Mode; and Long-Mode. and several sub-modes: Protected-Mode: PM-32, PM-16, VM-86; Long-Mode: Compatibility-32, Compatibility-16, Long-Mode-64. VM-86 basically looks like a 16-bit real-mode address space, but it may actually be located anywhere in memory. when running DOS apps inside Windows, they would run in VM-86 mode. given long-mode doesn't have VM-86 mode available, then the OS can't run them. MS decided while they were at it, to drop PM-16 as well, which basically also broke all of the Windows 3.x era apps. hence, this is part of the reason for needing things like DOSBox (or running Win98 in VMware, which allows both DOS and Win3.x apps to run, apart from the realization of just how crash-prone Win98 actually was, like one goes about doing stuff for several hours and it blue-screens, ...). DOSbox is basically an emulator which works either via interpretation (faking the CPU and hardware entirely in software) or via dynamic translation (dynamically rewriting the real-mode code into a form which can run on a modern CPU). VMware works by using virtualization, which gets a little more strange (it involves nesting the page translation and processor state). in this case, even though the host-OS is running in long-mode, the OS running inside the emulator may be running in a different CPU mode.
[toc] | [prev] | [next] | [standalone]
| From | Stuart <DerTopper@web.de> |
|---|---|
| Date | 2012-11-17 23:59 +0100 |
| Message-ID | <k894rm$7i9$1@dont-email.me> |
| In reply to | #19769 |
Am 11/17/12 1:08 AM, schrieb BGB: > On 11/16/2012 5:08 AM, Stuart wrote: >> On 11/15/2012 5:08 PM, Stuart wrote: >> [snip] >>>> The early 286 processor had a register width of >>>> 16 bits but an address bus with 24 bits (4MB), so they had to invent >>>> this segmentation model in order to compute a 20bit address from two 16 >>>> bit registers. >> >> On 11/16/12 5:46 BGB wrote: >>> corrections: >>> 24 bits is 16MB (because 2^24 = 16777216), this bus size was used by >>> both the 286 and 386SX (the 386DX and 486 used full 32-bits); >>> the segments:offset -> 20 bit address thing was there since the 8086, >>> which could only address 1MB of RAM (in contrast to 64kB on the 8080); >>> on current 64-bit chips, the segmentation is also non-functional in 64 >>> bit mode with the partial exception of the FS and GS segments (used >>> mostly for implementing TLS and similar). >> >> Gosh, I got it all mixed up. Of course 24 bits is 16MB. I can't say >> where my brain got the number 4MB from, probably because most 286 boards >> could only handle 4MBs of memory at that time. Or was that only for EMS >> modules? >> > > can't really say there. > > the motherboards may have set smaller limits, given that was a fairly > large amount of memory at the time. > > >>> (so, while the segment registers are still present, they don't really do >>> all that much anymore). >> >> I don't know. As far as I can see it, it should still be possible under >> a 64 bit processor to set up segment based memory protection using call >> gates and such, so all the privilege level checking stuff should still >> be present in 64 bit CPUs (albeit noone uses it anymore). >> > > yes, things like gates and interrupts still work, just you can't use > segmented addressing with 64-bit code (as in, the part where the segment > base address is added to the virtual address to get another address). > > in 32-bit mode, the segments could still do this, just 32-bit OS's > didn't really bother to do so (it was much more convenient simply to use > a single large flat 4GB address space). > > > basically, if all the segment registers really do is give things like > the operating mode and protection-level, and are basically set up by the > OS and largely ignored by code, this isn't really doing a whole lot. > > FWIW: they could at this point almost just as easily remove segmentation > entirely, and application software wouldn't really notice (although the > OS would notice). > > the partial exception here was FS and GS, which operating systems use > for accessing TLS variables and similar. these segments are handled > specially by the processor. > > >>> in effect, the chip is using a 64-bit flat address model, but may remap >>> the addresses mostly through the use of page-based address translation >>> (which maps from the program's virtual address space to the physical/RAM >>> address space). >>> >>> yes, the CPU has backwards compatibility, but it actually involves a >>> fair amount of mode-changing (as control is passed from one program to >>> another, the CPU mode changes), but there are limits to this. >>> >>> however, real-mode software (IOW: most of the software from 1985) can't >>> actually run on the CPU if it is running in "long mode", so it actually >>> requires use of either hardware emulation or virtualization to make this >>> work (for example, DOSbox does emulation, and VMware does >>> virtualization). >>> >>> as-is, about the oldest software that can be run directly in modern >>> Windows is roughly mid-to-late 90s era software (IOW: from when the >>> world moved solidly over to 32 bits), although the hardware can >>> technically still support running 16-bit protected-mode software in >>> long-mode (theoretically, MS could have made Win3.x apps work without >>> emulation, had they wanted to do so...). >> >> Um, does that mean that I can no longer install DOS on a modern 64 bit >> PC? Not so long ago I bought a HP laptop without an OS (planned to run >> Linux on it). It shipped with FreeDOS. Awesome. Reminded me of the good >> old times when we messed with the LAN cards of four PCs for hours just >> to be able to play Doom2 on Christmas Eve. >> > > the CPU will still run DOS, just not while running in "Long Mode". > > this means you can still install DOS and Win9x on the computer, and they > will work as before. > > but, if you boot up a 64-bit OS, then this OS can no longer run any DOS > code (unless it switches back out of long-mode, but it would be fairly > complicated and expensive to make an OS which does this). > > > basically, a way of thinking about it is that the CPU has several major > operating modes: > Real-Mode (AKA: "Legacy Mode"); > Protected-Mode; > and Long-Mode. > > and several sub-modes: > Protected-Mode: PM-32, PM-16, VM-86; > Long-Mode: Compatibility-32, Compatibility-16, Long-Mode-64. > > VM-86 basically looks like a 16-bit real-mode address space, but it may > actually be located anywhere in memory. > > when running DOS apps inside Windows, they would run in VM-86 mode. > given long-mode doesn't have VM-86 mode available, then the OS can't run > them. > > MS decided while they were at it, to drop PM-16 as well, which basically > also broke all of the Windows 3.x era apps. > > > hence, this is part of the reason for needing things like DOSBox (or > running Win98 in VMware, which allows both DOS and Win3.x apps to run, > apart from the realization of just how crash-prone Win98 actually was, > like one goes about doing stuff for several hours and it blue-screens, > ...). > > DOSbox is basically an emulator which works either via interpretation > (faking the CPU and hardware entirely in software) or via dynamic > translation (dynamically rewriting the real-mode code into a form which > can run on a modern CPU). > > VMware works by using virtualization, which gets a little more strange > (it involves nesting the page translation and processor state). in this > case, even though the host-OS is running in long-mode, the OS running > inside the emulator may be running in a different CPU mode. > Thanks for sharing. Stuart
[toc] | [prev] | [next] | [standalone]
| From | Anonymous <nobody@remailer.paranoici.org> |
|---|---|
| Date | 2012-11-16 12:42 +0000 |
| Message-ID | <3dea97c25f2492e75dcd428e705880d9@remailer.paranoici.org> |
| In reply to | #19760 |
Stuart <DerTopper@web.de> wrote: > On 11/15/12 sl@exabyte wrote: > [snip] > > And I suppose only hardware with 64-bit address bus can run 64-bit OS. > > Wrong. Typical 64 bit processors have either a 36 bit or a 40 bit > physical address bus (40 bits are 1 TB, an almost incredible amount of > RAM, wikipedia mentions that some AMD chips even offer a 48 bit memory > bus). IBM offers a 64 bit data bus for a theoretical max storage 2^64 bytes. Unfortunately they only support 256T the heartless bastards! ;-)
[toc] | [prev] | [next] | [standalone]
| From | Roedy Green <see_website@mindprod.com.invalid> |
|---|---|
| Date | 2012-11-16 05:17 -0800 |
| Message-ID | <77fca8h4t114pfpfq897edrppj8k69bi7l@4ax.com> |
| In reply to | #19759 |
On Thu, 15 Nov 2012 10:48:38 +0800, "sl@exabyte" <sb5309@hotmail.com> wrote, quoted or indirectly quoted someone who said : > >I don't know what JVM is the host running, it just states OpenSuse v11 >64-bit, and I just suppose it is JVM 64-bit. run wassup on it. see http://mindprod.com/applet/wassup.html -- Roedy Green Canadian Mind Products http://mindprod.com Types of Garbage Collection: ()In Canada, the government sends men to your house every every week to take away your garbage. Hoarders are free to hang onto things they don’t really need. ()In third world countries, it is up to you to take your own garbage away. ()Java’s garbage collection system is analogous to a garbage removal system where every hour, workers scan your house for junk mail, the contents of waste baskets and anything else they are absolutely sure you don’t want to keep. ()C++’s system for disposing of unreferenced objects is similar to India’s, with the strange feature that undiscarded garbage becomes invisible but still stinks.
[toc] | [prev] | [next] | [standalone]
| From | Jan Burse <janburse@fastmail.fm> |
|---|---|
| Date | 2012-11-14 20:08 +0100 |
| Message-ID | <k80q81$pul$1@news.albasani.net> |
| In reply to | #19749 |
Arne Vajhøj schrieb: > Pure Java: > > Run with 32 Run with 64 > Build with 32 yes yes > Build with 64 yes yes There are different shades of 64-bit I guess, i.e. the -XX:+UseCompressedOops option. Not sure how this influences C interaction. Bye
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.java.programmer
csiph-web