我试图在汇编中执行此算术运算,但是每次都得到错误的答案,不确定我应该怎么做
这些问题来自一本教科书,我确实有答案,但是试图理解如何获得答案
The link contains the image which has question and my work as shown below
Address | value || register value
0x100 0xFF || %rax 0x100
0x108 0xAB || %rcx 0x1
0xll0 0x13 || %rdx 0x3
0x118 0xll ||
|| lines are just to separate the two sides
Questions are
Instruction Destination Value
addq %rcx, (%rax) :
subq %rdx,8(%rax) :
imulq $16, (%ra,x,%rd.x,8) :
incq 16 (%rax) :
decq %rcx :
subq %rdx, %rax :
Instruction Destination Value
addq %rcx, (%rax) : 0x100 ?
subq %rdx,8(%rax) : 0x108 ?
imulq $16, (%ra,x,%rd.x,8) : 0x118 ?
incq 16 (%rax) : ? ?
decq %rcx : %rcx 0x0
subq %rdx, %rax : %rax ?
答案 0 :(得分:0)
您有汇编语言的基础知识吗?
第一个表似乎具有内存地址/寄存器及其初始值。
如果我们看一下第一条指令,似乎它从rcx
寄存器中取值并将其写入rax
寄存器所指向的内存地址中。
所以首先您可能会问自己,rax
的值是什么,现在该值假定是我要写入rcx
寄存器中的值的内存地址。
每当用()
即(%rax)
引用一个寄存器时,这意味着该寄存器的值应被视为一个内存地址,而起作用的值就是该内存地址中的值(也称为取消引用)。