你怎么能强行改变汇编语言CS
?IP
ORG
指令可以用来改变数字的IP
,但是你怎么改变CS
呢?
基本上我想用汇编来实现多线程。
许多论坛,包括堆栈溢出中的一个问题都说这是不可能的,但是即使 C 是由汇编代码制成的,它又如何具有多线程选项呢?
你怎么能强行改变汇编语言CS
?IP
ORG
指令可以用来改变数字的IP
,但是你怎么改变CS
呢?
基本上我想用汇编来实现多线程。
许多论坛,包括堆栈溢出中的一个问题都说这是不可能的,但是即使 C 是由汇编代码制成的,它又如何具有多线程选项呢?
我想你可以只用
jmp segment:offset
call segment:offset
只有远控制传输指令(jmp、call、ret)可以更改 CS 或 EIP 寄存器。我认为 CS 寄存器只能在实模式下更改。
RET 基本上采用 ESP(堆栈指针)的值并将其推送到 IP/EIP。然后 ESP 增加 8 加上立即偏移量(如果存在)。
要同时更改cs
和ip
寄存器,请在 AT&T 语法中使用以下内容:
ljmp $segment, $offset
或 Intel 语法中的以下内容:
jmp segment:offset