首页 文章
  • 2 votes
     answers
     views

    GCC生成的asm ::我在哪里分配给该寄存器? [重复]

    可能重复:当汇编代码使用%eax和%edx时,不确定为什么我们添加寄存器%rdx和%rax 所有 . 所以,这是我的最小程序: int main(int argc, char * argv[]){ volatile int a; volatile int b; volatile int c; a = 9; b = 15; c = a+b; ...
  • 2 votes
     answers
     views

    如何确定寄存器是从右到左加载,反之亦然

    在查看gdb输出并查看汇编调用时,通常我可以找到一个使用硬编码值的命令来确定寄存器是从右到左加载,反之亦然 . 通常类似于以下内容: sub rsp, 16 要么 sub 16, rsp 但有时候,没有像上面这样的值可见 . 我所看到的只是如下调用: (gdb) disassemble Dump of assembler code for function main: 0x...
  • 6 votes
     answers
     views

    NASM(英特尔)与AT&T语法:有什么优势?

    我正在阅读英特尔处理器文档并同时编写一些基本的汇编代码 . 我的服务器上有 nasm 和 as (GAS),我理解两个汇编程序的基本区别 . 长期来说: 关注哪种语法更好? 这些语法有哪些优缺点? 哪一个被更广泛地使用和理解? 我也很感激您可以与我分享的任何偏好 .
  • 3 votes
     answers
     views

    x86 mov / add指令和内存寻址

    我正在学习类中的x86程序集,我很遗憾你如何区分寄存器操作数和内存引用的作用 . 我有几个想要澄清的混乱 . 以下代码是我的教科书所说的分别是推送和弹出的漫长道路: subl $4, %esp movl %ebp, (%esp) movl (%esp), %eax addl $4, %esp 那么在subl指令中,我们是否总能指望%esp保存地址值? 两个movl函数之间有什么区别?可以将第一...
  • 1 votes
     answers
     views

    如何将AT&T样式汇编代码移到Visual Studio和Intel样式语法?

    我有一个非常专业的文件,用x86-64汇编为Linux编写,在GCC下编译 . 我需要将该代码移动到Visual Studio项目,并且mll64.exe希望程序集文件采用Intel格式 . 我试图构建一个跨平台的DLL,但它不起作用: 15:47:19 cpudiag2> gcc -shared -o my.dll my.o / usr / bin / ld:my.o:在制作共享对象时,...
  • -2 votes
     answers
     views

    有人能解释一下这段代码吗?

    英语这不是我的第一语言,所以如果我拼错了一些话对不起 . 我在堆栈方面遇到了一些麻烦,我将放在这里的所有代码都能完美运行 . 这个代码例如它很容易,我理解它的堆栈 . .globl f f: push %ebx movl 8(%esp), %eax movl 12(%esp), %ebx addl %ebx, %eax ret 堆 ----...
  • 5 votes
     answers
     views

    设计AT&T汇编语法的最初原因是什么? [关闭]

    在x86或amd64上使用汇编指令时,程序员可以使用"Intel"(即 nasm 编译器)或"AT&T"(即 gas 编译器)汇编语法 . "Intel"语法在Windows上更受欢迎,但"AT&T"在UNIX(类似)系统上更受欢迎 . 但是,英特尔和AMD的手册,以及芯片创建者创建的手册都使用“英特...
  • 2 votes
     answers
     views

    x86装配GAS部门

    我不太确定分区在x86汇编中是如何工作的(GAS AT&T语法) . 我想做的是划分两个长,然后将商乘以除数,看看新数是否等于初始数(n / m * m = n) . movl %ebx, %eax movl %ecx, %edx idivl %edx imull %ebx, %edx cmp %edx, %ebx je .equal 上面的代码是我做分工的片段 . ebx和ecx是我想要分...
  • 2 votes
     answers
     views

    帮助VGA和putpixel intel x86 asm AT&T语法

    我想在asm中绘制一条彩色线条 . 我必须在x86 intel linux上使用AT&T语法 . 我已经相当远了,但我想知道如何进入VGA模式或模式X,以及如何在屏幕上放置一个像素 . 在标准C库(如printf)中是否有这样的功能? 非常感谢你的帮助 . :) `` .bss # Declaring uninitialized variables .data # Declari...

热门问题