Les*_*ker 1 c++ assembly pointers
此外,远近指针......任何人都可以详细说明一下吗?
在C++中,我不知道指针如何在直接操作码级或电路级工作,但我知道它是访问其他内存的内存,反之亦然等.
但是在Assembly中你也可以使用指针.
这里有什么明显的区别值得了解,还是相同的概念?它是否适用于低级别微处理器特定组件的mneumonics级别?
近端和远端指针仅与16位操作系统相关.忽略它们,除非你真的需要它们.您可能仍会在今天的编译器中找到关键字以实现向后兼容性,但实际上它们不会执行任何操作.在16位术语中,near指针是16位偏移量,其中存储器段已被上下文所知,并且far指针包含16位段和16位偏移量.
在汇编程序中,指针只指向内存位置.在C++中也是如此,但在C++中,内存可能包含一个对象; 根据指针的类型,地址可能会改变,即使它是同一个对象.考虑以下:
class A
{
public:
int a;
};
class B
{
public:
int b;
};
class C : public A, B
{
public:
int c;
};
C obj;
A * pA = &obj;
B * pB = &obj;
Run Code Online (Sandbox Code Playgroud)
pA而且pB不会平等!它们将指向C对象的不同部分; 将指针从一种类型转换为另一种类型时,编译器会自动进行调整.因为它知道类的内部布局,所以它可以计算出适当的偏移并应用它们.