小编The*_*ome的帖子

使用".intel_syntax noprefix"如何获取标签的内存地址?

我正在学习如何创建组装和链接的真实模式程序:

  • GCC汇编程序版本2.25
  • Binutils版本2.25
  • GCC版本5.2.0

我使用没有指定前缀的Intel语法 .intel_syntax noprefix

我想将字符串的地址加载到SI寄存器中.我知道,如何在NASM中引用内存位置,但是当我在GNU汇编程序代码中执行相同操作时,它只将字符串的WORD移动到寄存器而不是标签的地址.

我的代码是:

.code16
.intel_syntax noprefix

mov cx, 11
mov si, name
mov di, 0x7E00
push di
rep cmpsb
pop di
je LOAD
Run Code Online (Sandbox Code Playgroud)

当我用GCC编译它时,我可以在调试器中看到处理器执行的操作:

mov si, WORD ptr ds:0x7d2d
Run Code Online (Sandbox Code Playgroud)

但我想将字符串的地址移入寄存器,而不是它指向的数据.

我还尝试在名称周围放置方括号,如下所示:

.code16
.intel_syntax noprefix

mov cx, 11
mov si, [name]
mov di, 0x7E00
push di
rep cmpsb
pop di
je LOAD
Run Code Online (Sandbox Code Playgroud)

它没有任何区别.

NASM我知道这个汇编代码有效:

mov si, name
Run Code Online (Sandbox Code Playgroud)

NASM将生成将地址移动name到寄存器SI的指令.

我的问题:有没有办法强制GCC使用带有无前缀的英特尔语法将符号的地址加载到寄存器中?

x86 assembly real-mode gnu-assembler intel-syntax

7
推荐指数
1
解决办法
3189
查看次数

如何关闭温斯顿开玩笑的日志

目前我正在使用 jest 测试 NodeJS 应用程序。特别是系统看起来像这样:

当我运行测试时,我喜欢对日志进行排序。特别是在第一次测试然后深入日志时。我知道,那个笑话有选择--silent。有趣的是,这个选项不适用于温斯顿。winston的源代码看起来像是试图直接写入stdout/err。

--silent有人知道,在使用该选项运行测试时如何让温斯顿保持沉默

node.js npm jestjs

4
推荐指数
1
解决办法
2824
查看次数

标签 统计

assembly ×1

gnu-assembler ×1

intel-syntax ×1

jestjs ×1

node.js ×1

npm ×1

real-mode ×1

x86 ×1