从汇编角度看C语言类型转换

    技术2022-05-20  31

    最近在看《Computer Systems--A Programmer‘s Perspective》觉得有关C语言指针转换部分很有意思,虽然以前常使用类型转化可是却不知道底层(编译器?)到底怎么做的,于是从汇编角度学习了一下。使用工具GNU gcc-4.4.5,vim-7.2 ,Ubuntu10.10

    假如如下定义类型v和指针p,且使用类型转化:

    src_t v; dest_t *p; *p = (dest_t)v; 

    假如sizeof(src_t) > sizeof(dest_t),那么直接截取src_t中的低字节给dest_t。例如从int a转化为char b,由于这些局部变量都会存在stack上,那么就会有如下代码:可以看到就是简单的截取大变量的低字节部分给小的变量。注意其中设计到寄存器间接寻址。

     

    int main() { int a = 4; char *b; *b = (char)a; }//gcc -S file.c /*Assembly*/ movl $4,-4(
    转载请注明原文地址: https://ibbs.8miu.com/read-2219081.html

    最新回复(0)