x86

    0熱度

    1回答

    我很新裝配,現在我試圖瞭解cmp如何工作。下面要說的寫在wiki: cmp arg2, arg1 執行ARG1和ARG2之間的比較操作。比較 通過從arg1(有符號)減去arg2來執行,結果 可以被稱爲Temp。 溫度然後被丟棄。 這是什麼意思「Temp然後被丟棄」?它存儲在哪裏?我怎樣才能訪問這個比較結果?有人可以解釋嗎?

    2熱度

    1回答

    一旦用戶輸入了正確的密碼,我想顯示「Hello World」,但是如果密碼不正確,程序會提示輸入Yes(Y)/ No(N),如果用戶輸入Yes Y),程序將給用戶三次機會顯示「Hello World」,如果用戶輸入了No(N),程序將退出。 我的問題是,每次我選擇是(Y),該程序保持循環,其剛剛結束,如果我進入否(N), 這裏是我的代碼(我已經跳過某些部分) ... org 0100h

    1熱度

    1回答

    我已經開始學習NASM彙編器& RE。我已經得到了第一個問題是下一個(簡稱): 使用objconv實用我不能恢復反編譯的程序。 我的簡單的應用程序: #include <stdio.h> char* msg = "Hello World!"; int main(void) { printf("%s\r\n", msg); return 0; } 1)。第一步驟中,

    2熱度

    1回答

    對於娛樂,我正在學習GNU擴展程序集,使用帶有32位Linux目標的x86的AT & T語法。我剛剛花了最後三個小時編碼兩個可能的解決方案,以交換兩個整數變量a和b的值,我的解決方案都不能完全解決我的問題。首先,讓我們來看看我的TODO障礙在一些細節: int main() { int a = 2, b = 1; printf("a is %d, b is %d\n", a,

    3熱度

    1回答

    這是我的彙編程序add.s .globl add add: movl 4(%esp), %eax movl 8(%esp), %ebx addl %ebx, %eax ret 這是我的C程序。我正試圖從C程序中調用匯編程序。 #include <stdio.h> int add(int a, int b); int main() {

    -1熱度

    1回答

    我在x64上使用C++多線程。我想更好地理解數據總線。我想知道如果我嘗試從2個線程設置變量而沒有任何防範(無互斥鎖,CV,信號量和無原子)會發生什麼。數據總線依賴於什麼? 例如,如果我有變量: int32_t i; 如果我設置在不同的線程變量: 線程1: i =0x11223344; 線程2: i =0x44332211; 正如我知道針對x64數據總線是64位。所以變量i可以設置爲1條

    0熱度

    1回答

    我在學習彙編,它在某種程度上是有意義的,但我有一個問題。我有這個源文件hello.sfml: ; nasm -felf64 hello.asml && ld hello.o global _start section .text _start: ; write(1, message, 13) mov rax, 1 ; syscall 1 is w

    3熱度

    1回答

    多少的性能提升,如果有的話,可以從一個最近高端的Intel CPU重新排序的x64(x86-64的)指令得到。在極度危急的情況下值得一提嗎? 我也想知道關於通過改變寄存器的使用取得的成果的可能性/使用附加寄存器(如果免費),以允許在某些情況下,奇較長距離的代碼移動?

    0熱度

    2回答

    Employee STRUCT IdNum BYTE "000000000" ; 9 LastName BYTE 30 DUP(0) ; 30 ALIGN WORD ; 1 byte added Years WORD 30 ; 2 ALIGN DWORD ; 2 byte added SalaryHistory DWORD 0,0,0,

    2熱度

    1回答

    我嘗試添加幾個像素在一起,以便做羅嗦濾波器NASM。我已經設法添加三個像素,其值爲00 + d3 + d8(0 + 211 + 216)。當我嘗試添加一個像素,值爲0時,程序無法打印變量blurr的值。 更新: 似乎增加了可變總和產品可在完成三次,因爲如果我註釋掉另一個add,該值將在我的輸出文件打印。 blurrTopRow: ;from 0 - 251 there will be n