当一个程序被认为是机器依赖的 - 这是什么意思?

时间:2010-09-02 23:01:13

标签: c#

有人可以给我一些例子吗?

5 个答案:

答案 0 :(得分:1)

使用特定于平台的API,即。 Win32 API或Linux API,如果它使用32位或64位特定库。

一般情况下:使用所有计算机上都不存在的任何资源。

答案 1 :(得分:1)

你在哪里使用现有的功能说一台机器而不是另一台?

以下是一些例子:

  • 需要某些附件或端口 - 比如UART调制解调器等
  • 使用仅存在于特定CPU上的指令,例如英特尔不是amds等
  • 使用可能存在于其他版本操作系统中的操作系统功能

基本上是阻止代码在另一台机器上运行的任何东西。

答案 2 :(得分:0)

如果使用不安全的托管代码编写和/或依赖于非托管DLL或特定于平台的API,则.NET程序可能具有计算机依赖性。

“依赖于机器”这里通常意味着依赖于32位或64位指针大小。任何操纵IntPtr的托管C#代码都很可能对本机指针的大小敏感--32位或64位。

可验证的托管代码通常与机器无关。可以编译.NET应用程序或程序集以在“32位或63位”环境中运行,这意味着它将根据运行时的OS环境JIT编译为本机32位或本机64位代码。

如果托管程序集依赖于非托管DLL,这通常意味着托管代码与编译非托管DLL的机器类型相关联 - 32位或64位,但不是两者。

答案 3 :(得分:0)

“依赖于机器”意味着程序在一台机器上的行为与另一台机器上的行为不同。通常,这意味着有关机器硬件的某些内容会影响程序。程序可能会将某些计算卸载到GPU,因此仅适用于具有与程序编写兼容的GPU的计算机。程序可能能够利用一些特定于一个CPU的专业指令,而在其他CPU上,它必须使用多个指令来模拟该指令。

这与“平台相关”的概念密切相关,通常是指对特定操作系统或系统软件集的依赖。

答案 4 :(得分:0)

通常,这意味着程序依赖于一台机器上存在但可能不存在于其他机器上的某些属性或行为。例如,如果一个人调用机柜供应商提供的特殊驱动程序,则特定机器可能会闪烁机柜上的某些灯。使用这种驱动程序的代码仅适用于具有该类型机柜的​​机器。