Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
fstcw 汇编操作数类型不匹配
我正在尝试使用 C 中的内联汇编中指定的舍入模式对输入双精度舍入进行舍入 为此 我需要使用以下命令获取 FPU 控制字fstcw然后更改字中的位 不幸的是我在第一行遇到了错误 double roundD double n RoundingM
c
Assembly
rounding
att
x87
“mov offset(%rip),%rax”有什么作用?
Does rax获取偏移量加上这条指令的地址 还是下一条指令的地址 从微代码的角度来看 如果答案是下一条指令可能会更容易 下一个 这是 x86 上的一般规则 另请参阅分支 在 Intel 手册第 2 卷第 2 2 1 6 RIP 相对寻址部
Assembly
x8664
att
addressingmode
relativeaddressing
汇编程序中的重定位截断错误
我对汇编语言完全陌生 我尝试编写简单的程序来破译凯撒密码 问题是链接后我收到以下错误 cezar o In function loop text 0xbf relocation truncated to fit R X86 64 8 aga
Assembly
x8664
att
relocation
每个 AT&T 语法操作数访问内存或寄存器中的什么值?
假设以下值存储在指定的内存地址和寄存器中 Address Value Register Value 0x100 0xFF eax 0x100 0x104 0xAB ecx 0x1 0x108 0x13 edx 0x3 0x10C 0x11
Assembly
x86
memoryaddress
att
addressingmode
如何将以下 NASM 代码转换为 AT&T 语法,以修复“无法处理 jmp 中的非绝对段”错误
我是 AT T 语法新手 我想将以下 NASM 语法代码转换为 AT T 语法只是为了便于理解 我尝试将其转换为 AT T 语法 lgdt gdtpointer jmp gdtcode start gdt quad 0x0000000000
Assembly
x86
nasm
BootLoader
att
无法调整尺寸指令
我想知道为什么有些汇编指令可以推断 但其他的则不能 例如 在以下程序中我有 globl main main push rbp mov rsp rbp mov 8 8 rbp mov 8 rbp rax pop rbp ret 我收到以下错误
Assembly
x86
gnuassembler
att
mulx 的 AT&T / GAS 语法是什么? [复制]
这个问题在这里已经有答案了 The 维基教科书 x86 汇编 https en wikibooks org wiki X86 Assembly GAS Syntax says GAS指令一般具有助记符源 目的地的形式 例如 以下 mov 指
Assembly
x86
gnuassembler
att
关于 [base + index*scale + disp] 和 AT&T disp(base,index,scale) 的几个问题
Intel 和 AT T 语法中内存寻址的一般形式如下 base index scale disp Intel including GAS intel syntax noprefix disp base index scale AT T 我
Assembly
x86
att
addressingmode
intelsyntax
cmpl 和 cmp 之间的区别
我试图理解汇编以便能够解决难题 但是我遇到了以下说明 0x0000000000401136 lt 44 gt cmpl 0x7 0x14 rsp 0x000000000040113b lt 49 gt ja 0x401230
Assembly
x86
x8664
att
instructions
关于 AT&T x86 语法设计的问题
谁能向我解释为什么 AT T 语法中的每个常量前面都有一个 为什么所有寄存器都有 这是否只是又一次试图让我做很多蹩脚的打字 另外 我是唯一一个发现 16 esp 相比之下确实违反直觉 esp 16 我知道它编译成同样的东西 但为什么有人想在
Assembly
x86
att
intelsyntax
x86-64 中 movq 和 movabsq 的区别
我说的是 x86 64 Intel 架构中的数据移动指令 我读过 常规的movq指令只能具有可表示为 32 位二进制补码数的立即源操作数 而movabsq指令可以将任意 64 位立即数作为其源操作数 并且只能将寄存器作为目标 您能详细说明一
Assembly
x8664
att
instructions
immediateoperand
将指针传递给汇编函数
我对汇编编程相当陌生 我正在使用带有 GCC Linux 的 x86 平台 我有一个我想从 C 调用的函数 myfunc unsigned char s1 unsigned char s2 int someint 该函数将获取 s1 和 s
Assembly
x86
att
使用 clang 的指令 movq 的操作数无效
我正在使用movq使用基于 LLVM 的 clang 902 0 39 1 编译器的 Intel Core i5 上的 X86 64 汇编指令 Intel 语法中的简化代码 位于 my asm S 文件中 如下所示 intel syntax
Assembly
Clang
x8664
att
x86-64 指令集、AT&T 语法、lea 和括号的混淆
有人告诉我 lea rax rdx 是无效语法 因为源代码需要放在括号中 即 lea rax rdx 我想我显然误解了 lea 和括号的目的 我以为 lea rax rdx 会将 rax 中存储的内存地址移动到 rdx 但显然这就是 lea
Assembly
x8664
att
instructionset
at&t 汇编语法中带 $ 或不带 $ 符号的数字有什么区别?
假设 data 部分有以下项目 0x1234 00010203 04050607 08090a0b 0c0d0e0f 0x1238 10000000 在代码中 mov 0x1234 eax mov 0x1238 ebx 我相信使用 符号 它
Assembly
x86
att
immediateoperand
程序集:用于自定义操作系统键盘支持的引导加载程序
我有一个工作简单的自定义操作系统 目前没有做太多事情 D 现在我正在使用一个没有键盘支持的汇编文件 boot s 汇编文件 boot s set magic number to 0x1BADB002 to identified by boo
Assembly
x86
att
osdev
Multiboot
Linux 上的 x86 32 位汇编中的函数调用如何工作?
我正在从 Jonathan Bartlett 的 Programming from ground up 一书中学习 GNU 汇编 在讨论函数调用和堆栈的主题时 我无法理解它的工作原理 下面是书上写的内容 在执行函数之前 程序将函数的所有参数
Assembly
x86
gnuassembler
callingconvention
att
在 x86 程序集中声明数组
我正在学习汇编 我需要制作一个大数组 我已经研究过如何声明数组 并且遇到了这个 array db 10 dup 其中声明了 10 个未初始化字节的数组 我尝试了这个并尝试组装它并得到 错误 操作数 1 之后需要逗号 我意识到 x86 不支持
Arrays
Assembly
x86
nasm
att
在 Visual Studio 代码中运行 asm
Visual Studio代码 mac 中是否有某种可以运行基本程序集的插件 例如以下内容 section text globl start start movl 1 eax movl 0 ebx int 0x80 事实上 目前我正在 ss
Assembly
VisualStudioCode
x86
att
如何确定寄存器是否从右到左加载,反之亦然
在查看 gdb 输出并查看汇编调用时 通常我可以找到一个使用硬编码值的命令来确定寄存器是否从右到左加载 反之亦然 通常类似于以下内容 sub rsp 16 or sub 16 rsp 但其他时候 没有像上面这样的值可见 我所看到的都是类似以
Assembly
x86
cpuregisters
att
intelsyntax
1
2
3
»