【发布时间】:2020-06-20 20:50:40
【问题描述】:
在这个汇编程序开发中系统崩溃了。我认为其中一些原型是错误的。但是,我不知道到底是什么问题。
; uasm -elf64 tagex.asm
; gcc -o out tagex.o -fno-pie -no-pie `pkg-config --cflags --libs gtk+-3.0`
OPTION LITERALS:ON
gtk_init PROTO :VARARG
gtk_text_view_new PROTO :VARARG
gtk_text_view_get_buffer PROTO :VARARG
gtk_text_buffer_create_tag PROTO :VARARG
.DATA
WWatch qword 0
WWatchBuffer qword 0
.CODE
main PROC
invoke gtk_init,0,0
invoke gtk_text_view_new
mov WWatch ,rax
invoke gtk_text_view_get_buffer,WWatch
mov WWatchBuffer ,rax
invoke gtk_text_buffer_create_tag,WWatchBuffer, "rtl_quote",\
"foreground", "green",\
"wrap_mode", 2,\
"direction", 2,\
"indent", 30,\
"left_margin", 20,\
"right_margin", 20,\
0
invoke gtk_text_buffer_create_tag ,WWatchBuffer,"red_foreground","foreground", "red", 0
xor rax,rax
ret
main ENDP
end
【问题讨论】:
-
撞到什么了?使用调试器来查找哪条指令崩溃,这样您就可以将minimal reproducible example 的那部分与代码一起包含在内。我假设这是在某种 GNU/Linux 上?
-
@PeterCordes Ubuntu linux。 [github.com/samsung-191t/coding/blob/master/asm%20error]。
0x004011f7 sub rsp, 8 -
第一条指令就崩溃了?这甚至不是内存访问。也许您的指令错误并且您的代码位于不可执行的部分?如果
.CODE是我认为MASM 使用的正确指令,我什至从未听说过UASM 所以IDK。另外,edit您的问题包括您拥有的所有详细信息。 -
调用第二个函数时出现错误:gtk_text_buffer_create_tag 我尝试了没有这一行的代码:“sub rsp, 8”,我注意到了不同