gpt4 book ai didi

我可以指向代码,然后传递给下一条指令吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:34 24 4
gpt4 key购买 nike

点赞此链接http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Labels-as-Values.html
我可以得到一个标签的内存地址,所以如果我声明一个标签,得到你的地址,并添加你的地址,我会传递到下一条指令吗?一些插图 >


int main () {
void *ptr;
label:

instruction 1;
instruction 2;

ptr = &&label;

// So if I do it...

ptr = ptr + 1;
// I will get the instruction 2 correct??

谢谢大家的回答。

最佳答案

不,我不这么认为。

首先,您似乎获取了标签的地址,但这是行不通的。标签由编译器解释,但它并不代表代码中的实际地址。

其次,C/C++(实际上是任何语言)中的每条语句都可以翻译成许多机器语言指令,因此指令 1 可以翻译成 3、5、10 甚至更多机器指令。

第三,你的指针指向void。 C 编译器不知道如何递增 void 指针。通常,当您递增指针时,它会将您指向的数据类型的大小添加到地址。所以增加一个长指针会增加 4 个字节;增加一个字符指针将增加 1 个字节。在这种情况下,您有一个空指针,它不指向任何内容,因此不能递增。

第四,我不认为x86机器语言中的所有指令都由相同的字节数表示。所以你不能指望通过向指针添加一些东西来到达下一条指令。您也可能会在下一条指令的中间结束。

关于我可以指向代码,然后传递给下一条指令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3026001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com