att

    0热度

    1回答

    我正在做一些组装练习,并提出了一个我无法解决的问题。他们告诉我%esp = 0x08c28f6a。 然后他们告诉我我有一个功能: funct:movw 0(%esp),%bx; .... RET 0x80482ae:调用本功能; 0x80484a4:XXXXXXX; 我不明白在函数调用后%esp和%bx的值是什么,而0(%esp)的含义对我来说并不清楚。我知道当函数被调用时,下一条指令的地址被压入

    0热度

    1回答

    如果我提出从32位寄存器中的值说: movq %rdx,%rax movl %edx,%eax 将存储在%rax中的价值得到打一顿?

    1热度

    1回答

    在查看gdb输出并查看程序集调用时,通常可以使用硬编码值查找命令以确定寄存器是否从右向左加载或相反亦然。 通常类似以下内容: sub rsp, 16 或 sub 16, rsp 但其他时候,像上面没有值是可见的。 所有我看到的是这样的方法调用如下: (gdb) disassemble Dump of assembler code for function main: 0x00000

    0热度

    1回答

    如何查找汇编程序函数中给定参数和返回值的类型? lea 0x1(%ecx),%ebx究竟做了什么? 0x1(%ecx)的地址是否存储在%ebx? 我有一个任务来将C汇编代码重写为C函数,这是我不明白的。我认为参数是int,因为mov 0x8(%esp),%edx,mov 0xc(%esp),%eax和返回类型是int以及,但这可能是错误的,因为我们的验证系统不接受我的解决方案。 整个代码用于x86

    0热度

    1回答

    以下是核心文件中的一行汇编代码。 0x00002ac8c957012d <+45>: mov 0x8(%rsp), %rsi 我注意到注册表rsp位于以下位置,因此我使用Examine命令查看内容以及另外16个对象/字节。 > x/16x 0x2acd5752a610 0x2acd5752a610: 0x70 0xa6 0x11 0xff 0x29 0xcd 0x22 0x00 0x2ac

    0热度

    2回答

    我知道imul是带符号的乘法,文档似乎暗示三个操作数的语法是imulq dest, source1, source2。因此该行将读为:将存储在%rbx中的地址的内容与%rax中的值相乘,然后将其存储在内存位置44中,但这肯定不正确?

    -5热度

    2回答

    我在空闲时间学习英特尔汇编语言(att语法),我只是想知道如何将两个数字相乘,让5和2可以不使用mul命令?

    1热度

    1回答

    我现在在学习AT & T x86程序集。我正在写代码,它将两个32位整数相乘而不使用“*”。问题是调试器不断告诉我我有分段错误。这是我的代码。 .global _start .data a: .long 0 b: .long 0 count: .long 0 .text _start: movl $0, %eax mov

    -3热度

    2回答

    如果在eax中有一个char数组的地址,那么0(%eax)和(%eax)之间的区别是什么?或者它们是相同的,都是指数组中的第一个元素?

    -1热度

    1回答

    我需要AT & T组件中的一些帮助。 我已经加载一些数据到内存中像下面(十六进制和分解) (gdb) x/8xb &buffer_in 0x8049096: 0x03 0x02 0x10 0x27 0xe8 0x03 0x64 0x00 (gdb) x/8db &buffer_in 0x8049096: 3 2 16 39 -24 3 100 0 比方说该第一字节=数计