18得票4回答
GNU汇编中的.byte汇编指令有什么用途?

在查看一些内嵌汇编的C代码时,我遇到了一个以点号开头的 .byte 指令。 通过在网上查找汇编参考文献,我发现它用于在内存中保留一个字节。 但是在代码中,该语句之前没有标签。所以我想知道未标记的 .byte 指令或任何其他数据存储指令的用途。 例如,如果我编写 .byte 0x0a,我该...

18得票5回答
x86_64汇编Linux系统调用混淆

我目前正在学习在Linux下的汇编语言。我一直在使用《从基础开始编程》这本书,而且所有的例子都是32位的。我的操作系统是64位的,我一直试图在64位中完成所有的例子。然而,我遇到了麻烦:.section .data .section .text .global _start _start: ...

18得票2回答
GNU汇编中的1b和1f是什么意思?

我正在分析Linux异常代码。顺便说一下,我不能理解GNU汇编语法。 svc_preempt: mov r8, lr 1: bl preempt_schedule_irq @ irq en/disable is done inside ldr r0, [...

17得票1回答
x86-64 GAS Intel语法中的RIP相对变量引用如"[RIP + _a]"是如何工作的?

考虑以下x64 Intel汇编中的变量引用,其中变量a在.data部分声明:mov eax, dword ptr [rip + _a] 我不理解这个变量引用是如何工作的。因为 a 是指向变量运行时地址的符号(带有重定位),那么 [rip + _a] 如何解引用正确的 a 内存位置呢?实际上,r...

17得票4回答
如何从ARM汇编调用C函数?

我正在编写针对安卓设备上的 ARM Cortex-A 的代码(使用 GNU 汇编器和编译器),并且我正在尝试在汇编语言和 C 语言之间进行接口交互。特别是,我有兴趣从汇编语言中调用用 C 语言编写的函数。我尝试了许多方法,包括使用 .extern 指令、使用 asm 和 __asm__ 声明 ...

16得票1回答
x86汇编语言:浮点数比较

作为编译器项目的一部分,我需要编写用于x86的GNU汇编器代码来比较浮点数值。我试图找到有关如何执行此操作的在线资源,并且从我的理解中,它的工作方式如下所示: 假设我要比较的两个值是浮点栈上唯一的值,则fcomi指令将比较这些值,并设置CPU标志,以便可以使用je、jne、jl等指令。 我...

15得票5回答
如何在Linux上安装和使用GAS(GNU编译器)?

我使用的是Ubuntu操作系统,现在正在寻找一款适用于Linux的汇编器编译器,最终找到了GAS。 我正尝试安装和运行它,但是遇到了问题。

15得票2回答
".comm"是什么意思?

我刚刚翻译了这个程序,#include <stdio.h> int dam[1000][1000]; int main (int argc, const char * argv[]) { // insert code here... printf("Hello...

15得票1回答
“.global”和“.globl”的区别是什么?

例如,我曾见过:_start,作为.global _start和.globl _start。看起来我可以随意使用它们。这两者之间有什么区别吗?

15得票1回答
如何使用GCC生成一个最小的BIOS Hello World引导扇区,并在真实硬件上从USB启动?

我已经成功制作了最小的引导扇区,可以在QEMU 2.0.0 Ubuntu 14.04上使用:.code16 .global _start _start: cli mov $msg, %si mov $0x0e, %ah loop: lodsb or %a...