问题标签 [att]
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.
linux - 使用 scanf 进入全局或局部变量(在堆栈上),32 位调用约定
给定以下代码:
输出将是“Hello World!”。
现在我尝试从用户那里获取一个数字,然后在屏幕上打印出来,但它不起作用(代码编译,但我做错了什么)。我的错误在哪里?
assembly - NASM(英特尔)与 AT&T 语法:有什么优势?
我正在浏览英特尔处理器文档并同时编写一些基本的汇编代码。我的服务器上同时拥有nasm
和as
(GAS),并且我了解这两个汇编程序的基本区别。
从长远来看:
- 专注于这些语法中的哪一个是更好的主意?
- 这些语法的优点和缺点是什么?
- 哪一种被更广泛地使用和理解?
我也很感激你能与我分享的任何偏好。
assembly - lea 汇编指令
我只是想确保我读的是正确的:
我将第一行读为:edx = [epb + 12]
,第二行读为:eax = edx + edx*4
有人可以澄清吗?
另外,如果我有以下两行怎么办:
一旦执行了第二行,eax
寄存器会被覆盖吗?
并且eax = edx + edx*4
是将地址乘以4?还是地址内容减4?
assembly - x86 lea 指令
我试图很好地掌握 x86 中的 LEA 指令:
鉴于这两行,我知道:
eax = edx + edx*4
进而
eax = edx + edx*2
两个问题。首先,如果这些指令像本例中那样按顺序出现,那么一旦执行第二行,eax 寄存器就会被覆盖?究竟什么会被加载到寄存器中?另一个地址?或者这是对这些寄存器指向的值进行算术运算?
assembly - 切换到保护模式后“呼叫”
我正在尝试切换到 intel x86 中的保护模式。
我已经用 lgdt 加载了我的 gdt,将 cr0 的 P 标志设置为 1 和所有段选择器,但是当我从函数调用返回时,我无法调用任何其他函数,或者我收到此错误
这是我的 switch_to_pmode 函数:
我的电话
谢谢
assembly - x86 汇编中的美元 ($) 和百分比 (%) 符号代表什么?
我试图了解汇编语言如何用于微型计算机体系结构类,并且在示例中我一直面临不同的语法:
这些代码是什么意思?esp寄存器的32个操作数是什么?
assembly - 在 x86-64 AT&T 程序集中,地址前的星号 * 是什么意思?
以下行是什么意思:
内存地址前面的星号是什么意思?另外,当内存访问方法缺少它的第一个寄存器值时,这意味着什么?
通常它类似于 ("%register", %rax, 8),但在这种情况下它没有第一个寄存器。
有小费吗?
assembly - ASM——“%”是干什么用的?
汇编中的“%”有什么用?例如,有时一条指令写成:
其他时候它写成:
(没有百分号)有什么区别?
linux - x86:中断处理程序循环
我正在尝试通过 IDT 处理内核中断。我在 Linux 下的 Intel x86 上工作。
我已经设置了我的 IDT 和我的中断条目,并且我启动了一些测试来查看我的中断处理程序。
当我尝试int $0x0
时,它工作得很好:我的处理程序被调用但是当我尝试一些带有错误代码的异常时,我进入了一个无限循环。
架构如下:
当异常到来时,我的处理程序的第一部分在 ASM 中并调用一个通用的 C 部分。
my_handler.c
my_handlers.S
如果我尝试运行以下代码:
它有效,执行后恢复*a = 42;
但如果我尝试:
它进入一个无限循环:
为什么处理第一个异常 Page Fault(14) 然后在 General Protection(13) 上循环?
谢谢您的回答。
assembly - MOVZBL 指令在 IA-32 AT&T 语法中的作用是什么?
这条指令具体是做什么的?