Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用At&;将字符串复制到x86程序集中的指针;t语法_String_Pointers_Assembly_Char_Att - Fatal编程技术网

String 使用At&;将字符串复制到x86程序集中的指针;t语法

String 使用At&;将字符串复制到x86程序集中的指针;t语法,string,pointers,assembly,char,att,String,Pointers,Assembly,Char,Att,所以,另一个函数调用这个函数并给它一个char*。这个函数应该创建一个字符串,并用字符串的值替换char*的值 .text .global func .LC0: .string "hereisasamplemessage\0" func: movl $.LC0,4(%eax) ret 它的实际作用是腐蚀字符。我得到一个模糊的正方形作为输出。如果我也尝试像这样将asci值移动到eax中: movl $101,4(%eax) movl $101,8(%eax) 它对

所以,另一个函数调用这个函数并给它一个char*。这个函数应该创建一个字符串,并用字符串的值替换char*的值

.text
.global func
.LC0:
    .string "hereisasamplemessage\0"
func:

    movl  $.LC0,4(%eax)

    ret
它的实际作用是腐蚀字符。我得到一个模糊的正方形作为输出。如果我也尝试像这样将asci值移动到eax中:

movl $101,4(%eax)
movl $101,8(%eax)
它对第一个asci值起作用,然后我得到一个模糊的正方形作为下面的字符


真的,我不完全清楚字符串在汇编中是如何工作的。LC0是存储在另一个寄存器中的保留变量还是一个寄存器?

请注意,每个字符有1个字节,但使用的是
long
指令和偏移量,因此每次写入4个字节。所以,您将得到1个正确的字符,后跟3个零,这通常表示字符串的结尾,但根据您的输出方法,您可能会将它们视为模糊正方形
.LC0
只是该字符串示例的标签。