2013-08-19 20 views
1

我是Linux Assembly Assembly編程和運行x86_64 Ubuntu 13.04的新手。 據我所知。 寄存器中的64位爲這樣 RAX - 64位 EAX - 32位 斧 - 16位 並再次啊和人8位Linux程序集編程中的64位ineteger的關鍵字

但在32位和64位操作系統詮釋爲32位即的Int32。如果我嘗試複製一個int vaue(說rax)它將只需要eax(如果你知道我的意思),我的簡單問題是什麼KEYWORD(DATATYPE)用於64位整數在LINUX裝配程序? 像.int爲32位INETGER 我試了很久,它也使用32位,不知道爲什麼。 如果您需要其他信息,請在下面回覆。

+0

這是非常特定的彙編程序。你使用的是什麼工具鏈? –

+0

使用「as」簡單地將它組裝起來,只用-gstabs進行調試,然後用「ld」鏈接。 – k3rn3l

回答

1

您可能正在尋找.quad指令。

+0

嘿謝謝.quad就是我一直在尋找的東西。它效果很好。 – k3rn3l

1

在NASM例如,積分數據類型被命名爲​​,WORDDWORDQWORD,如:

mov al, BYTE PTR [ebx] ; 1 byte 
mov ax, WORD PTR [ebx] ; 2 bytes 
mov eax, DWORD PTR [ebx] ; 4 bytes 
mov rax, QWORD PTR [ebx] ; 8 bytes 

其他彙編方言也將後綴指令(movbmovsmovlmovq)但是在這個版本中,指令的類型是從操作數大小推斷出來的。

嚴格地說,在這個例子中指針類型也是多餘的,但其他指令(如move-with-zero-extension)確實需要明確知道從內存中讀取多少字節,這是類型名稱的來源英寸