草庐IT

IDA反汇编

全部标签

c++ - 卡萨布兰卡:在 linux centos 上的汇编错误 gcc 4.8.1

我正在尝试构建casablanca,就像他们在theirpage上所说的那样.因为我使用CXX=gcc-4.8安装了gcc-4.8.1是不行的,所以我删除了它:cmake..-DCMAKE_BUILD_TYPE=Release它创建文件,当我执行make时,我收到这些错误:Scanningdependenciesoftargetcasablanca[1%]BuildingCXXobjectsrc/CMakeFiles/casablanca.dir/streams/linux/fileio_linux.cpp.o/tmp/ccoWLl81.s:Assemblermessages:/tmp

c++ - 卡萨布兰卡:在 linux centos 上的汇编错误 gcc 4.8.1

我正在尝试构建casablanca,就像他们在theirpage上所说的那样.因为我使用CXX=gcc-4.8安装了gcc-4.8.1是不行的,所以我删除了它:cmake..-DCMAKE_BUILD_TYPE=Release它创建文件,当我执行make时,我收到这些错误:Scanningdependenciesoftargetcasablanca[1%]BuildingCXXobjectsrc/CMakeFiles/casablanca.dir/streams/linux/fileio_linux.cpp.o/tmp/ccoWLl81.s:Assemblermessages:/tmp

c - 如果我要用汇编编写程序,这个 HelloWorld 汇编代码的哪些部分是必不可少的?

我有这个简短的helloworld程序:#includestaticconstchar*msg="Helloworld";intmain(){printf("%s\n",msg);return0;}我用gcc编译成如下汇编代码:.file"hello_world.c".section.rodata.LC0:.string"Helloworld".data.align4.typemsg,@object.sizemsg,4msg:.long.LC0.text.globlmain.typemain,@functionmain:.LFB0:.cfi_startprocpushl%ebp.cfi

c - 如果我要用汇编编写程序,这个 HelloWorld 汇编代码的哪些部分是必不可少的?

我有这个简短的helloworld程序:#includestaticconstchar*msg="Helloworld";intmain(){printf("%s\n",msg);return0;}我用gcc编译成如下汇编代码:.file"hello_world.c".section.rodata.LC0:.string"Helloworld".data.align4.typemsg,@object.sizemsg,4msg:.long.LC0.text.globlmain.typemain,@functionmain:.LFB0:.cfi_startprocpushl%ebp.cfi

C 到汇编调用约定 32 位与 64 位

我一直在关注这本优秀的编程基础书籍,想学习汇编。虽然此时不在本书中,但我想在32位机器上从C调用我的汇编函数,这在根据本书工作时一样有效。我在这里所做的是将第一个参数存储在%ebx中,将第二个参数存储在%ecx中。.typepower,@function.globlpowerpower:pushq%ebpmovl%esp,%ebpsubl$4,%espmovl8(%ebp),%ebxmovl12(%ebp),%ecx我将这个(以及函数的其余部分)编译成一个目标文件,创建一个main.c,我在其中原型(prototype)化函数并调用它,如下所示:intpower(intb,intx);

C 到汇编调用约定 32 位与 64 位

我一直在关注这本优秀的编程基础书籍,想学习汇编。虽然此时不在本书中,但我想在32位机器上从C调用我的汇编函数,这在根据本书工作时一样有效。我在这里所做的是将第一个参数存储在%ebx中,将第二个参数存储在%ecx中。.typepower,@function.globlpowerpower:pushq%ebpmovl%esp,%ebpsubl$4,%espmovl8(%ebp),%ebxmovl12(%ebp),%ecx我将这个(以及函数的其余部分)编译成一个目标文件,创建一个main.c,我在其中原型(prototype)化函数并调用它,如下所示:intpower(intb,intx);

c - 为什么这个内联汇编不能为每条指令使用单独的 asm volatile 语句?

对于以下代码:longbuf[64];registerlongrraxasm("rax");registerlongrrbxasm("rbx");registerlongrrsiasm("rsi");rrax=0x34;rrbx=0x39;__asm____volatile__("movq$buf,%rsi");__asm____volatile__("movq%rax,0(%rsi);");__asm____volatile__("movq%rbx,8(%rsi);");printf("buf[0]=%lx,buf[1]=%lx!\n",buf[0],buf[1]);我得到以下输出:

c - 为什么这个内联汇编不能为每条指令使用单独的 asm volatile 语句?

对于以下代码:longbuf[64];registerlongrraxasm("rax");registerlongrrbxasm("rbx");registerlongrrsiasm("rsi");rrax=0x34;rrbx=0x39;__asm____volatile__("movq$buf,%rsi");__asm____volatile__("movq%rax,0(%rsi);");__asm____volatile__("movq%rbx,8(%rsi);");printf("buf[0]=%lx,buf[1]=%lx!\n",buf[0],buf[1]);我得到以下输出:

[ARM 汇编]进阶篇—存储访问指令—2.3.3 栈操作指令

栈是一种特殊的数据结构,其特点是后进先出(LIFO,LastInFirstOut)。在ARM汇编中,栈通常用于保存函数调用时的寄存器状态、局部变量和返回地址等。本节将详细介绍ARM汇编中的栈操作指令,并通过实例帮助你更好地理解和掌握这些指令。推入栈(PUSH)PUSH指令用于将一个或多个寄存器的值推入栈中。基本语法如下:PUSH{reglist}其中,reglist是要推入栈的寄存器列表。示例:PUSH{R0-R3};将寄存器R0-R3的值推入栈中在这个示例中,PUSH指令将寄存器R0-R3的值推入栈中。注意,ARM汇编中的栈默认使用降序(FullDescending)模式,即栈顶指针指向栈的

linux - "mov rax, QWORD PTR fs:0x28"汇编指令有什么作用?

这个问题在这里已经有了答案:Whydoesthismemoryaddress%fs:0x28(fs[0x28])havearandomvalue?(3个答案)关闭4年前。紧接执行此指令之前,fs包含0x0。另外我想知道如何从GDB中的这个内存区域读取,该命令是什么?