我正在学习如何创建组装和链接的真实模式程序:
我使用没有指定前缀的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使用带有无前缀的英特尔语法将符号的地址加载到寄存器中?
目前我正在使用 jest 测试 NodeJS 应用程序。特别是系统看起来像这样:
当我运行测试时,我喜欢对日志进行排序。特别是在第一次测试然后深入日志时。我知道,那个笑话有选择--silent。有趣的是,这个选项不适用于温斯顿。winston的源代码看起来像是试图直接写入stdout/err。
--silent有人知道,在使用该选项运行测试时如何让温斯顿保持沉默