Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
从汇编程序获取命令行参数
通读 专业汇编语言书籍 似乎它提供了用于读取命令行参数的错误代码 我纠正了一点 现在它从段错误变成了读取参数计数 然后是段错误 这是完整的代码 data output1 asciz There are d params n output2
Linux
Assembly
x86
gnuassembler
尝试使用 x86 程序集 GNU GAS 在数组索引处赋值时出现错误
我在用x86GNU 与 GCC 的程序集 并尝试实现相当于以下内容的程序集c c int x 10 x 0 5 但是 当我尝试运行 使用命令 a out 我的汇编代码如下 第一次编译后gcc filename s 错误Segmentatio
MacOS
Assembly
x8664
gnuassembler
如何使用 GNU 汇编器 (as) 将汇编文件编译为原始二进制(如 DOS .com)格式? [复制]
这个问题在这里已经有答案了 我想在 Windows 中编译这个源代码 这只是一个例子 start NOP NOP 当我使用 NASM 或 FASM 编译它时 输出文件长度为 2 个字节 但是当我用 GNU 汇编器 as 编译它时 输出文件长
Assembly
gnuassembler
binutils
Gas 与 nasm:哪个汇编器生成最好的代码?
这两种工具都将汇编指令直接翻译成机器代码 但是是否有可能确定哪一个生成最快 最干净的代码 当你用汇编程序编写时 您正在准确地描述生成的指令所以它不依赖于汇编器 这取决于你 您编写的助记符与机器代码中的实际指令之间存在一一对应的关系
nasm
Assembly
gnuassembler
理解这部分手臂的汇编代码
syntax unified thumb cpu cortex m4 arch armv7e m fpu fpv4 sp d16 Changes from unprivileged to privileged mode thumb func
Assembly
arm
gnuassembler
cortexM
无法调整尺寸指令
我想知道为什么有些汇编指令可以推断 但其他的则不能 例如 在以下程序中我有 globl main main push rbp mov rsp rbp mov 8 8 rbp mov 8 rbp rax pop rbp ret 我收到以下错误
Assembly
x86
gnuassembler
att
将 scanf 与 x86-64 GAS 组件结合使用
我在尝试调用系统函数 scanf 以在我的 x86 汇编程序中工作时遇到了很多问题 目前我已经让它从标准中读取 但是它只会读取没有段错误的字符 我不知道为什么 指定字符串是 d 我在网上看到的 x86 中的 scanf 示例使用 quark
Assembly
x86
scanf
x8664
gnuassembler
mulx 的 AT&T / GAS 语法是什么? [复制]
这个问题在这里已经有答案了 The 维基教科书 x86 汇编 https en wikibooks org wiki X86 Assembly GAS Syntax says GAS指令一般具有助记符源 目的地的形式 例如 以下 mov 指
Assembly
x86
gnuassembler
att
什么是寄存器%eiz?
在我使用转储出来的以下汇编代码中objdump lea 0x0 esi eiz 1 esi 什么是注册 eiz 前面的代码是什么意思 See 为什么选择 GCC LEA EIZ http web archive org web 200905
Assembly
x86
gnuassembler
objdump
GCC 是否优化汇编源文件?
我可以使用 GCC 将汇编代码文件转换为可重新分配的文件 gcc c source S o object o O2 优化选项是否有效 我可以期望 GCC 优化我的汇编代码吗 No GCC 将汇编源代码通过预处理器 然后传递到汇编器 任何时候
c
Assembly
gcc
compileroptimization
gnuassembler
GNU GAS 汇编中是否有代表当前地址的符号?
我很想知道是否有任何特殊的 GAS 语法可以实现与 NASM 示例中相同的效果 SECTION data msg db Hello World 10 0 the 0 terminated string len equ msg means c
Assembly
GNU
gnuassembler
memoryaddress
如何在x86汇编的数据段中写入常量
我正在编写一个汇编程序 使用 icc 作为汇编器 我需要在数据部分编写一些常量 以便在主程序中进行相对加载 例如以下指令 vmovdqu msg rip ymm0 我现在将数据部分写成这样 data msg 0x00000000 0x010
Assembly
x86
x8664
gnuassembler
Gas .org 与 nasm 中的 ORG 不同吗?
我使用 gnu 作为简单的启动 是这样的 text org 0x7c00 start movw 0x7c0 ax movw ax ds movw ax es leaw greeting msg si call prtstr end fill
Assembly
nasm
gnuassembler
如何使用 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 al
Assembly
x86
qemu
gnuassembler
baremetal
Linux 上的 x86 32 位汇编中的函数调用如何工作?
我正在从 Jonathan Bartlett 的 Programming from ground up 一书中学习 GNU 汇编 在讨论函数调用和堆栈的主题时 我无法理解它的工作原理 下面是书上写的内容 在执行函数之前 程序将函数的所有参数
Assembly
x86
gnuassembler
callingconvention
att
在内联 GNU 汇编器中获取字符串长度
我正在重新学习我在非常旧的 MS DOS 机器上使用的汇编程序 这是我对该函数应该是什么样子的理解 它编译但崩溃了SIGSEGV当试图把0xffffffff in ecx 该代码在具有 32 位 Debian 9 的 VM 中运行 如有任何
Linux
gcc
x86
inlineassembly
gnuassembler
了解基指针和堆栈指针:在 gcc 输出的上下文中
我有以下 C 程序 int main int c 10 0 0 0 0 0 0 0 0 1 2 return c 0 当使用 gcc 的 S 指令编译时 我得到以下程序集 file array c text globl main type
c
gcc
Assembly
gnuassembler
汇编器什么时候使用像 R_X86_64_32S 这样的符号扩展重定位而不是像 R_X86_64_32 这样的零扩展更好?
举个具体的例子 在 GAS 2 24 上 移动地址 mov s eax s After as 64 o a o a S objdump Sr a o 使用零扩展 0000000000000000
Assembly
nasm
x8664
ELF
gnuassembler
x86-64 GAS Intel 语法中的 RIP 相对变量引用(如“[RIP + _a]”)如何工作?
考虑 x64 Intel 程序集中的以下变量引用 其中变量a被声明在 data部分 mov eax dword ptr rip a 我无法理解这个变量引用是如何工作的 自从a是与变量的运行时地址对应的符号 带重定位 如何 rip a 取消引
Assembly
x8664
gnuassembler
addressingmode
relativeaddressing
1
2
3
»