相关疑难解决方法(0)

直接读程序计数器

在内核模式或其他模式下,可以直接读取Intel CPU上的程序计数器(即没有"技巧")吗?

x86 assembly program-counter

29
推荐指数
4
解决办法
2万
查看次数

代替x86汇编'call'指令?

x86调用指令有哪些替代方案?也许类似于推送返回地址然后跳转?

他们也是获取内存当前位置的命令吗?

x86 assembly call

17
推荐指数
2
解决办法
2万
查看次数

程序计数器是否保存当前地址或下一条指令的地址?

作为初学者和自学者,我正在学习集会,目前正在阅读由Allen Hollub撰写的The C Companion一书的第3章.我无法理解他在具有双字节字的假想演示机器中描述的程序计数器或PC的描述.以下是第57页的PC说明.

"PC始终保存当前正在执行的指令的地址.它会在执行每条指令时自动更新,以保存下一条要执行的指令的地址.......这里的重要概念是PC保存下一条指令的地址,而不是指令本身."

我无法理解保持当前地址和下一条指令的地址之间的区别.PC是否同时在两个连续的字节中保存两个地址?

assembly cpu-architecture

5
推荐指数
1
解决办法
1320
查看次数

"推"的操作数类型不匹配

我需要有关使用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)

c assembly gcc x86-64

0
推荐指数
1
解决办法
1030
查看次数

是否可以在8086汇编中操作指令指针?

我想知道我是否可以在8086汇编中操作(读取和更改值)指令指针(IP).

例如,

说IP当前正在存储0200h.我想读取这个值并将其更改为其他内容4020h.我怎么能这样做?

assembly x86-16

-2
推荐指数
1
解决办法
1301
查看次数

标签 统计

assembly ×5

x86 ×2

c ×1

call ×1

cpu-architecture ×1

gcc ×1

program-counter ×1

x86-16 ×1

x86-64 ×1