在内核模式或其他模式下,可以直接读取Intel CPU上的程序计数器(即没有"技巧")吗?
x86调用指令有哪些替代方案?也许类似于推送返回地址然后跳转?
他们也是获取内存当前位置的命令吗?
作为初学者和自学者,我正在学习集会,目前正在阅读由Allen Hollub撰写的The C Companion一书的第3章.我无法理解他在具有双字节字的假想演示机器中描述的程序计数器或PC的描述.以下是第57页的PC说明.
"PC始终保存当前正在执行的指令的地址.它会在执行每条指令时自动更新,以保存下一条要执行的指令的地址.......这里的重要概念是PC保存下一条指令的地址,而不是指令本身."
我无法理解保持当前地址和下一条指令的地址之间的区别.PC是否同时在两个连续的字节中保存两个地址?
我需要有关使用ASSEMBLY部件的C代码的帮助.GCC编译程序集有问题,错误:
$ make
gcc -Wall -g -std=c99 -pedantic -c -o sthread.o sthread.c
sthread.c: In function ‘sthread_create’:
sthread.c:159:57: warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]
t->context = __sthread_initialize_context(t->memory + DEFAULT_STACKSIZE, f, arg);
^
gcc -Wall -g -std=c99 -pedantic -c -o queue.o queue.c
as -g -o glue.o glue.s
glue.s: Assembler messages:
glue.s:32: Error: operand type mismatch for `push'
<wbudowane>: polecenia dla obiektu 'glue.o' nie powiod?y si?
make: *** [glue.o] B??d 1
Run Code Online (Sandbox Code Playgroud)
有问题的代码:
__sthread_switch:
# preserve CPU state on the …Run Code Online (Sandbox Code Playgroud) 我想知道我是否可以在8086汇编中操作(读取和更改值)指令指针(IP).
例如,
说IP当前正在存储0200h.我想读取这个值并将其更改为其他内容4020h.我怎么能这样做?