136得票6回答
“FS”/“GS”寄存器的作用是什么?

我知道以下寄存器及其用途: CS = 代码段 (用于IP) DS = 数据段 (用于MOV) ES = 目标段 (用于MOVS等) SS = 栈段 (用于SP) 但是下面这些寄存器的用途是什么? FS = "文件段"? GS = ??? 注意:我不是在问任何特定操作系统 -- ...

43得票2回答
现代操作系统是否使用分页和分段技术?

我正在阅读关于内存架构的文章,对分页和分段有些困惑。我了解到现代操作系统只使用分页来管理内存访问。但是,从反汇编代码中可以看到像“ds”和“fs”这样的段。这是表示操作系统(例如Windows和Linux)同时使用分段和分页,还是将所有段映射到相同的页面上(使得段变得无关紧要)?

36得票2回答
在汇编语言中,"DS:[40207A]"是什么意思?

0040103A CALL DWORD PTR DS:[40207A] USER32.MessageBoxA 什么是DS:的含义?

32得票3回答
分段分页和页式分段的区别或相似之处是什么?

我正在学习结合分页/分段系统,我的书上提到了两种方法:1.paged segmentation 2.segmented paging 我分不清这两者之间的区别。我认为在分页分段中,片段被分成页面,而在分段分页中,则是将页面分成片段,尽管我不知道我是否正确。与此同时,在互联网上,联合的分页/分段...

31得票2回答
为什么64位模式(长模式)不使用段寄存器?

我是一名初学者 :) 我正在学习英特尔架构,其中包括内存管理,例如分段和分页。我正在阅读英特尔手册,它非常容易理解英特尔的架构。 然而,我仍然对一些基本的问题很好奇。 为什么在64位长模式下,所有段寄存器都将进入0位?为什么系统不再使用段寄存器? 因为系统的64位大小(例如GP寄存器)足以...

27得票4回答
C语言中是否有类似于C++的std::less函数的等价物?

最近我回答了一个有关在C语言中对于指向不同对象/数组的指针进行p < q的未定义行为的问题。这让我想到:C++在这种情况下也具有相同的(未定义)<行为,但同时提供了标准库模板std::less,该模板保证当可以比较指针时与<返回相同的结果,并在无法比较指针时返回一致的排序。 ...

26得票3回答
8086-为什么我们不能将立即数据移入段寄存器?

在8086汇编编程中,我们只能通过首先将数据加载到通用寄存器(或内存)中,然后再将其从那里移动到段寄存器来加载数据到段寄存器。 例如,以下两种方式都是有效的。 mov ax, 5000h mov ds, ax ;;; or if you don't have a sp...

23得票3回答
什么是汇编语言中的 %gs

void return_input (void) { char array[30]; gets (array); printf("%s\n", array); } 在gcc中编译后,该函数被转换为以下汇编代码: push %ebp mov %es...

22得票1回答
x86中DPL和RPL的区别

阅读英特尔x86手册和其他资料,我不理解DPL(描述符特权级别)和RPL(请求特权级别)之间的区别。 为什么需要同时存在这两者? 非常感谢

19得票4回答
为什么x86架构上的Linux要为用户进程和内核使用不同的段?

我知道Linux在x86处理器上使用四个默认段(内核代码、内核数据、用户代码、用户数据),但它们都具有相同的基址和限制(0x00000000和0xfffff),也就是说,每个段映射到相同的线性地址集。 那么,既然如此,为什么还需要用户/内核段呢?我理解为什么需要为代码和数据分别设置段(由于x...