assembly相关内容

从用户模式CPU切换到内核模式:究竟是做什么?它是如何使这种转变?

CPU 从用户模式切换到内核模式:究竟是做什么?它是如何使这一过渡? 编辑: 即使是架构相关的,请给我一个答案。该架构是由你。告诉我你知道的架构。 我要得到什么东西都将在它参与的想法。 解决方案 请注意:这主要是为x86架构有关。这里有一个稍微简化的解释。 的过渡通常是由下列之一引起的: 故障(如页面错误或其他异常引起的通过执行一个指令) 中断(例如键盘中断或I / O整理 ..
发布时间:2016-07-18 19:52:38 .NET Framework

标签的地址(MSVC)

我们正在编写针对字节code为高层次的编译语言,有点分析和优化后,人们清楚地看到目前国内最大的性能开销,我们使用跳转到switch语句在字节级code的情况。 我们调查拉出每个案件标签的地址,并针对字节$ C $的流中存储C本身,而不是指令ID就是我们通常开关。如果我们这样做,我们可以跳过跳转表,并直接跳转到当前指令执行code的位置。这部作品在飞驰GCC,但是,MSVC似乎不支持的功能是这样的 ..
发布时间:2016-07-18 19:52:35 C/C++开发

切换到组件GDB

有没有什么办法调试广发行C或C ++程序时切换到组件? (考虑到所有的源文件和它们对应的汇编文件可用) 解决方案 有拆解功能或code某一段的方式,就是你所追求的? 该命令这样做将是拆机<作用名称> 或内存位置 这就是你指的是? (GDB)的帮助下拆机 拆卸内存的指定部分。 默认值是围绕所选的帧的PC功能。 带一个参数,围绕该地址的功能被倾倒。 两个参数会被当作一个范围的 ..
发布时间:2016-07-18 19:52:28 .NET Framework

你好世界NASM使用在Windows组件

我使用 NASM 编译下面的组装。然而,在Windows下的控制台中的code崩溃。 C:\\> NASM -f win32的TEST.ASM -o test.o C:\\> LD test.o -o test.exe的 部分。数据 味精DB“世界,你好!”,0AH LEN EQU $ -msg.text段 全球_WinMain @ 16_WinMain @ 16: ..
发布时间:2016-07-18 19:51:58 .NET Framework

CUDA禁用L1高速缓存只为一个变量

是否有关于CUDA 2.0设备的方法来禁用L1缓存只为一个特定的变量? 我知道,一个可以在编译时添加标记 -Xptxas -dlcm = CG 到 NVCC 对所有禁用的一级缓存内存操作。 不过,我想在一个特定的全局变量来禁用缓存仅适用于内存读取,使所有的内存的其余部分读取要经过L1缓存。 根据我在网上做了一个搜索,一个可能的解决方案是通过PTX组装code。 解决方案 正如上面提到 ..
发布时间:2016-07-18 19:51:57 .NET Framework

建议学习Linux的x86-64的装配和放大器;文件

有没有人有文件关于学习Linux的X86-64装配的基本面?我不知道是否要学习它原样,还是先学习X86,后来又学习它,但被我拥有的x86-64计算机,而不是86,我在想学习的x86-64代替; ) 也许有人可以给我一些鼓励,和方向,学习什么,如何,以怎样的文档。 请给我你最被看好的文档标题,我code一点点的Python,这是我在一个较低的水平语言的第一次尝试,我多准备奉献给它。 感谢所有 ..
发布时间:2016-07-18 19:51:53 .NET Framework

如何保证调试器使用的正确性INT 3(的0xCC)软件断点时,即使指令被修补?

我读过的INT 3(的0xCC)用于软件断点。 这是由(例如)一个调试器通过在内存中覆盖实际的程序code设置。 我也读到INT 3是一个“陷阱”而不是“错”异常意味着地址压入堆栈是指令的INT3指令的地址。 如何调试保证正确性,如果不重新执行指令修补? 解决方案 当你想继续断点火灾后的执行,有两种可能性:要么断点只应该开火一次,或者它应该是持久。如果只应该解雇一次,你恢复你与你的断 ..
发布时间:2016-07-18 19:51:49 .NET Framework

是什么`DWORD ptr`是什么意思?

有人能解释一下这是什么意思? (Intel语法,X86的Windows) 和DWORD PTR [EBP-4],0 解决方案 在“DWORD PTR”的部分被称为大小指令。 本页面解释了他们,但它不可能直接链接到正确的部分。 基本上,它的意思是“在目标操作数的长度为32位”,所以这会按位与在通过取 EBP 注册和0减去四人。 ..
发布时间:2016-07-18 19:51:47 .NET Framework

AT& T公司VS Intel语法和限制?

对于我来说,英特尔的语法更易于阅读。如果我通过组装林只在Intel语法疲惫地走集中,我会错过什么?有什么理由我想切换到AT& T公司(中能够读取别人的AT&放大器之外,变速箱总成)?我的第一个线索是,GDB使用AT&放大器;:T默认 如果该事项,我的重点只在任何关系组装和语法可能都对Linux / BSD和C语言。 修改 感谢您Zifre,雅各布B和迈赫达德。我希望我可以选择所有的三 ..
发布时间:2016-07-18 19:51:44 服务器开发

如何计算转移目标地址和分支目标地址?

我是新来的汇编语言即可。我正在读关于 MIPS 架构和我坚持的跳转目标地址和分支目标地址和如何计算每个他们。 我会非常感激,如果有人能帮助我。 先谢谢了。 解决方案 1。分公司地址计算 在MIPS分支指令只有16位偏移来确定下一条指令。我们需要添加到这个16位的值来确定下一个指令寄存器,这个寄存器实际上是由建筑暗示。它是PC寄存器自个人电脑被取指周期期间更新(PC + 4),使得其持 ..
发布时间:2016-07-18 19:51:40 .NET Framework

使用GDB单步装配code超出了规定的可执行文件会导致错误"不能找到当前功能和QUOT的界限;

我之外GDB的目标可执行文件,我甚至不具有对应于该目标栈。我想单步,无论如何,这样我就可以验证这是怎么回事,我组装code,因为我不是在x86汇编的专家。不幸的是,GDB拒绝做这个简单的汇编级调试。这使我可以设置并停止适当的断点,但只要我尝试单步起,GDB报告错误“无法找到当前函数的边界”和EIP不会改变。 其他详细信息: 是由GCC汇编语句生成的机器code和我把它复制到它的执行内核内存的位 ..
发布时间:2016-07-18 19:51:31 服务器开发

如何打印汇编语言有色字符串?

扬DB“一月$” 串DB“周日周一周二周三周四周五周六$” 字符串1 DB“1 2 3 $” 字符串2分贝“4 5 6 7 8 9 10 $” STRING3 DB“11 12 13 14 15 16 17 $” 串,DB“18 19 20 21 22 23 24 $” STRING5 DB“25 26 27 28 29 30 31 $” 解决方案 code对于前景和背景色的所有组合:包 ..
发布时间:2016-07-18 19:51:29 .NET Framework

这是code正确(编号+数字,然后打印出结果)

我想要做的事汇编语言简单。结果 另外两个数字,并在屏幕上打印的结果。 我这样做,code: 。型号小 .STACK 100H。code 开始: MOV AX,10 ADD斧,5 MOV啊,02H INT 21H MOV啊,01H INT 21H MOV啊,4路 INT 21H年底启动 编译后,code没有任何错误,告诉我​​一个奇怪的字符。 修 ..
发布时间:2016-07-18 19:51:25 .NET Framework

32位除法汇编语言

我在学习汇编语言编程在我的大学课程(80386编程)。目前,我正在学习用EDX和EAX 32位除法的来龙去脉寄存器分别存储剩余时间和智商。我想知道,为什么我不能当我不包括得到正确的输出 MOV EDX,00000000H 在我的计划。该方案要么不运行或给出错误的输出。 相关来源$ C ​​$ C: MOV EDX,00000000H MOV EAX,1234567Ah DIV 111111 ..
发布时间:2016-07-18 19:51:22 .NET Framework

嵌入汇编操纵64位寄存器便携式C ++

我在C(嵌入C ++)的简单(但性能的关键)算法来处理数据缓冲区...算法“自然”使用64位大端寄存器值 - 我想优化这种使用汇编获得对进位标志和BSWAP直接访问,因此,避免操纵64位在时间值一个字节。 我要解决是OS /编译器之间移植 - 微创支持GNU G ++和Visual C ++ - 分别Linux和Windows之间。对于这两个平台,很明显,我假设支持X86-64指令集的处理器。 ..
发布时间:2016-07-18 19:51:21 C/C++开发

x86_64的 - 装配 - 循环条件和乱序

我的不的要求一个基准。 (我是这样的话,我会做我自己。的) 我的问题: 我倾向于避免间接/索引寻址为了方便模式。 作为替代,我经常使用即时,绝对或寄存器寻址。 在code: ; %ESI具有阵列地址。假设我们遍历一个双字(4字节)阵列。 ; %ECX是数组元素计数 (0x98767)myloop: ...;做任何与ESI% 加$ 4,%ESI 十二月%ECX ..
发布时间:2016-07-18 19:51:18 .NET Framework

负载从64位地址转换成其它寄存器比RAX

在64位,从64位绝对地址(也就是废弃一个64位立即)加载可以通过完成 movabs addr64,RAX% 然而,当目标寄存器比 RAX 任何其他汇编器给出错误消息,为movabs操作数大小不匹配。我缺少什么? 解决方案 没有办法。它只能从AREG加载 MOVABS对于MOV运code构成气体运code名称“MOV AREG, [Offs64]“和”MOV [Offs6 ..
发布时间:2016-07-18 19:51:13 .NET Framework