草庐IT

汇编移位指令

全部标签

windows - x86 32 位汇编代码是否有效 x86 64 位汇编代码?

Isallx8632-bitassemblycodevalidx8664-bitassemblycode?我想知道32位汇编代码是否是64位汇编代码的子集,即每个32位汇编代码都可以在64位环境中运行?我想答案是肯定的,因为64位Windows能够执行32位程序,但后来我看到64位处理器支持32位兼容模式?如果不是,请提供一个不是有效64位汇编代码的32位汇编代码的小例子,并解释64位处理器如何执行32位汇编代码。 最佳答案 现代x86CPU具有三种主要操作模式(此描述已简化):在实模式下,CPU在禁用分页和分段的情况下执行16位代

c - 独立于汇编操作系统的原子比较和交换

我正在编写独立于操作系统的无锁队列,队列工作正常(使用默认的windows\linux原子CAS),但我想在linux和windows中不做任何更改的情况下使队列工作。所以我想我应该在汇编器中编写自己的CAS,或者有其他方法可以实现它?到目前为止我有这段代码:global_CAS_CAS:moveax,[esp+4]movedx,[esp+8]movecx,[esp+12];XCHGeax,edx我知道我仍然需要在CMPXCHG之前添加lock并且它应该与结构一起工作,但现在我更感兴趣的是让它工作。我使用nasm-2.10.05和这个命令编译nasm.exe-felf-ocas.oca

windows - 如何设置 Emacs 以进行汇编编程和修复缩进?

HowtosetEmacsupforassemblyprogrammingandfixindentation?Emacs以令人讨厌的方式缩进了一些指令。特别是,下面的global、extern和section关键字缩进为代码。我希望这些关键字左对齐。如何做到这一点?另外,汇编编程有什么好的模式值得推荐吗?global_mainextern_printfsection.text_main:pushmsgcall_printfaddesp,4retmsg:db'HelloWorld',0虽然语法高亮在asm模式下有效: 最佳答案 我在L

网络系统运维中级(华为1+X)简单指令。

1)pingIP:向该IP的PC端发送命令。2)displayinterface端口号:查看当前端口的速率和双工。3)interface端口:设置端口的速率和双攻模式。4)displaymac-address:查看连接交换机PC端的MAC地址。5)mac-addressstatic+PC端MAC地址+端口+vlan号:添加静态条目。6)displaymac-addressaging-time:查看MAC地址的老化时间。7)mac-addressaging-timeN:把MAC地址老化时间修改为N。8)vlanN:创建一个vlanN。9)vlanbatchNM:创建多个vlanNM。10)int

windows - 如何在DOS下显示汇编中的字符?

我有以下代码,我试图在其中显示,但我的调试器(AFD)继续调试但不显示任何内容。[org0x100]movax,0xb800moves,axmovdi,0nextchar:movword[es:di],0x0720adddi,2cmpdi,40jnenextcharmovax,0x0003;80x25textmode,16colorsint0x10 最佳答案 通过在退出前等待键盘按键,给自己一个机会来实际查看输出的内容:[org0x100]movax,0xb800moves,axmovdi,0nextchar:movword[es:

windows - 如何将 .asm 文件汇编并链接到 Win32 可执行文件?

我的系统上安装了NASM和Dev-Cpp。Dev-cpp随LD(GNU链接器)一起提供。我不熟悉汇编代码和从汇编文件创建32位Windows可执行文件的过程。我试过使用这个:nasm-fwin32ass.asmnasm-oassass.o我没有成功使用这些命令来创建可执行文件。汇编(使用NASM)和链接以生成将在32位Windows上运行的可执行文件的正确方法是什么? 最佳答案 您的一条评论(似乎已不复存在)确实提到您在Windows上安装了Dev-Cpp。如果您的路径上有Dev-CppMinGWbin目录,则GNU链接器LD可供您

windows - 崩溃转储意味着在顺序指令之间更改了寄存器值

我目前正在分析一位客户因蓝屏死机而产生的故障转储。出于保密原因,我无法提供故障转储,但我已经走到了死胡同。崩溃发生在DDK中的RtlSetBit函数中。这是上下文记录:rax=0000000000000000rbx=fffff8800282da00rcx=fffffa8007c10340rdx=0000000000000000rsi=0000000000000001rdi=fffffa8007c102e0rip=fffff8000168d0b4rsp=fffff880057478e8rbp=0000000000000000r8=0000000000000000r9=0000000000

linux - Kip Irvine - X86 处理器的汇编语言 - 与 Linux 的相关性如何?

KipIrvine的书有多相关AssemblyLanguageforx86Processors是针对Linux操作系统?换句话说,这是一本关于x86的书,与在Linux上学习x86真的有很大区别吗?无论如何,操作系统肯定只是ASM之上的抽象层?我在想是否要买这本书,但我对以​​Linux为中心的编程更感兴趣。 最佳答案 根据我在Amazon上收集到的评论,这是一本非常适合Windows的书。关于您的问题“操作系统肯定只是ASM之上的抽象层吗?”-实际情况并非如此。汇编语言编程就像用任何其他语言编程一样——如果您想做任何有用的事情,就

c# - Reflection.Emit.ILGenerator异常处理 "Leave"指令

首先,一些背景信息:我正在为学校项目制作编译器。它已经在工作了,我正在花费大量精力来修复错误和/或优化它。我最近遇到了一个问题,我发现当您调用以下任何成员方法时,ILGenerator对象会生成一个额外的leave指令:BeginCatchBlock()BeginExceptFilterBlock()BeginFaultBlock()BeginFinallyBlock()EndExceptionBlock()因此,您通过调用BeginExceptionBlock()开始一个try语句,使用BeginCatchBlock()添加几个catch子句,可能添加一个带有的finally子句co

c# - 如何从 C# 调用 CPU 指令?

我的处理器(Inteli7)支持POPCNT指令,我想从我的C#应用程序中调用它。这可能吗?我相信我在某处读到它不是,但是如果JIT发现它可用,它会调用它,但是我必须调用什么函数可以用这样的指令代替?Popcount在一个循环中被调用了数百万次,所以如果可能的话,我希望能够进行这种CPU优化。 最佳答案 你想玩火,我们这里喜欢玩火...classProgram{constuintPAGE_EXECUTE_READWRITE=0x40;constuintMEM_COMMIT=0x1000;[DllImport("kernel32.dl