问题标签 [assembly]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reference - 一些 x86 ASM 参考/教程?
我正在尝试查找有关 x86 汇编语言的一些参考资料。帮助我理解的教程/示例。-谢谢
c - 如何使用 x86 裸机组件获取键盘输入?
我正在尝试将内核的第一部分组合在一起。我目前将整个内核编译为 C 代码,并且我已经设法让它在控制台窗口中显示文本以及所有这些优点。现在,我想开始接受键盘输入,这样我就可以实际使用它并继续进行流程管理。
我正在使用 DJGPP 进行编译,并使用 GRUB 加载。我还使用了一小部分程序集,它基本上直接跳转到我编译的 C 代码中,我很高兴从那里。
我所做的所有研究似乎都指向 $0x16 的 ISR 以从键盘缓冲区中读取下一个字符。据我所知,这应该将 ASCII 值存储在 ah 中,并将键码存储在 al 中,或者类似的东西。我试图在内联汇编中使用以下例程对此进行编码:
调用此代码时,核心立即崩溃。(我在 VirtualBox 上运行它,我觉得没有必要在真实硬件上尝试这种基本的东西。)
现在我实际上有几个问题。没有人能够告诉我(因为我的代码是从 GRUB 启动的)我目前是在实模式还是受保护模式下运行。我没有以一种或另一种方式进行跳跃,我计划在实模式下运行,直到我设置了一个进程处理程序。
那么,假设我在实模式下运行,我做错了什么,我该如何解决?我只需要一个基本的 getc 例程,最好是非阻塞的,但如果谷歌在这方面提供帮助,我会感到很糟糕。一旦我能做到这一点,我就可以从那里做剩下的事情。
我想我在这里要问的是,我在正确的轨道附近吗?通常如何在这个级别上获得键盘输入?
编辑:哦……所以我在保护模式下运行。这当然解释了尝试访问实模式功能时的崩溃。
那么我想我正在寻找如何从保护模式访问键盘 IO。我也许可以自己找到,但如果有人碰巧知道,请随意。再次感谢。
assembly - 为什么没有包含 EAX 高字节的寄存器?
%AX = (%AH + %AL)
那么为什么不%EAX = (%SOME_REGISTER + %AX)
注册一些%SOME_REGISTER
呢?
assembly - 关于位比较的 x86 问题
我的作业的最后一部分有问题。我们得到一个比特流等,在流中是一个整数,文本部分中有 1 的个数。我得到那个整数和它的 24 是正确的,现在我遍历我得到的文本数据,并尝试计算其中的所有 1。但我的过程总是返回零。
我能够确保它正确循环并且确实如此。
文本 = Hello,它是 16 个 1,这是我的 proc,用于循环遍历该文本以计算其中的个数。
proc 的其余部分只是推送/弹出。我真正想要做的是使用 TEST 将 100000000 与一个字节进行比较,如果它是 1 inc AX,则将掩码右移 1 并循环整个字节,而不是 inc 到下一个字节并再次执行。
c - 如何在 Turbo C 的 C 代码中包含汇编代码?
如何在我的 C 程序中包含任何汇编代码行?
在 turbo c 中是否有可能将汇编代码文件 (.asm) 添加到少数 .c 文件的项目中?
assembly - CIL nop 操作码的目的是什么?
我正在浏览 MSIL 并注意到 MSIL 中有很多nop指令。
MSDN 文章说,如果操作码被修补,它们不会执行任何操作并用于填充空间。它们在调试版本中的使用比在发布版本中更多。
我知道这些语句在汇编语言中用于对齐后面的指令,但是为什么 MSIL 中需要 MSIL nop 呢?
(编者注:接受的答案是关于机器代码 NOP,而不是问题最初询问的 MSIL/CIL NOP。)
assembly - 为您的游戏或应用程序创建补丁需要哪些知识?
我一直很困惑软件供应商如何发布他们的应用程序或游戏,然后提供一组不同的可执行文件来改变之前构建的行为。这是怎么做到的?原始应用程序和补丁是否必须遵守某种规则?还是补丁会爬入原始可执行文件并更改其程序集信息?这需要二进制文件到字节级别的知识吗?
iphone - 如何在 iPhone 上进行内联汇编?
它是如何完成的?我需要采取哪些步骤以及需要考虑哪些陷阱和陷阱?
c++ - 轻柔介绍JIT和动态编译/代码生成
C/C++ 框架内动态代码生成的看似简单的基础已经在另一个问题中讨论过。是否有关于代码示例的温和介绍?
当我的需求更加温和时,我开始盯着高度复杂的开源 JIT 编译器流血。
是否有关于该主题的好文章不假定计算机科学博士学位?我正在寻找磨损良好的图案、需要注意的事项、性能考虑等。电子或基于树的资源可能同样有价值。您可以假设(不仅仅是 x86)汇编语言的工作知识。
assembly - 使用 LIB-USB 传输随机字节数时如何修复“错误 -5”?
我在使用LIB-USB
. USB 设备基于 PIC18F4550,具有单个控制端点。PC 前端是用 MSVC 编写的,使用 Lib-Usb 1.12。
在 PC 端,程序首先设置配置,声明接口,然后发送(和接收)控制消息(特定于供应商),所有这些都成功。在传输了看似随机的 # 个字节后(100 到 2000 之间的任意位置),传输停止,并从 usb_control_msg 调用返回错误 rc=-5 。
在 PC 端,调用如下所示:
最后一个调用,实际上是从 USB 设备获取数据,连续运行了很多次,但总是在以这种方式传输随机数量的字节(总共 100 到 2000 个)后终止。将管道更改为 EP1 会执行相同的操作,但最终会出现相同的错误。
在 USB 设备 (PIC) 端,描述符非常简单,只有 EP0 管道,如下所示:
实际的框架是 Bradley Minch 的汇编语言框架。
如果有人在我很想听之前遇到过此类问题,因为我已经尝试了几乎所有方法来解决它,包括使用不同的管道(EP1,结果相同),之前检查 PIC 上的 UOWN 位写入管道,与 PC 主机握手(在写入数据之前,PC 必须首先发送供应商特定的命令)但无济于事。