我正在为一项大学项目编写8086汇编程序。我已经通过互联网上的一些编译器设计资料,并阅读了《编译器龙书》。但问题是,我没有找到有关汇编(生成目标代码)部分的太多资料。是否有什么好的书籍或链接可以用于汇编设计?从哪里开始?我已经了解了词法分析、语法分析和中间代码生成。
我刚接触x86汇编语言,正在尝试理解这份文档中的代码:http://www.cs.cmu.edu/~410-s07/p4/p4-boot.pdf 第3页: movw $0x1234, %ax movw %ax, %ds movw $0x5678, %bx # The following in...
我正在跟随Phil-Opp Tutorials关于在Rust中编写操作系统的教程,并且在玩弄一下后,我想尝试在屏幕上显示真正的图形。 我已经想到应该从使用带有VESA的线性帧缓冲开始。我在osdev.org上找到了一些教程here和here,但它们不断谈论“函数代码”和es:di。第二个链...
我熟悉MIPS架构,它具有软件管理的TLB。因此,操作系统需要存储页面表和页面表项的方式和位置完全取决于你。例如,我曾使用单个反转的页面表完成了一个项目;我看到其他人使用每个进程的2级页面表。 但是,x86有什么故事呢?据我所知,TLB是硬件管理的。基本上,x86会告诉你,“嘿,这是你当前使...
有人能解释一下这是什么意思吗?(Intel语法,x86,Windows)and dword ptr [ebp-4], 0
我刚开始使用SSE,对于如何获取__m128i类型的最大整数值(max)感到困惑。例如: __m128i t = _mm_setr_ps(0,1,2,3); // max(t) = 3; 我搜索了一下,发现了MAXPS指令,但是我不知道如何在"xmmintrin.h"中使用它。 另外,...
请原谅我,我对x86汇编和汇编一般都是新手。 所以我的问题是,我有类似下面的代码:addl %edx,(%eax) %eax是一个寄存器,它保存着指向某个整数的指针。我们将其称为xp。 这是否意味着它在说:*xp = *xp + %edx?(%edx是一个整数) 我只是困惑addl将在哪...
当我在 C# 代码运行时添加断点,它会被触发。这是如何实现的呢? 我想说,在调试模式下运行时,Visual Studio 为代码块引用提供了参考,并且在运行时添加断点后,只要在编译后的代码中调用该引用,断点就会被激活。 如果我的假设是正确的,您可以详细说明一下它是如何工作的吗?