2015-12-24 17 views
-1

我正在爲X86 AT & T程序集編寫一些代碼來進行類分配。單獨測試了所有功能,並且它們完全按照預期工作,但出於某種原因,我在代碼中的每一行的標題中都會收到警告。由於個別函數被放置在它們自己的文件中編譯,並且除了函數之外沒有任何東西,所以在這裏我沒有真正遇到什麼問題。請幫忙。ATT X86程序集:警告:未終止的字符串;從gcc插入的換行符

我在14.04 Ubuntu上寫它。

gcc -m32 -c pstring.s 
pstring.s: Assembler messages: 
pstring.s: Warning: end of file in string; '"' inserted 
pstring.s:3: Warning: unterminated string; newline inserted 
pstring.s:4: Warning: unterminated string; newline inserted 
pstring.s:5: Warning: unterminated string; newline inserted 
pstring.s:6: Warning: unterminated string; newline inserted 
pstring.s:7: Warning: unterminated string; newline inserted 
pstring.s:8: Warning: unterminated string; newline inserted 
pstring.s:9: Warning: unterminated string; newline inserted 
pstring.s:10: Warning: unterminated string; newline inserted 
pstring.s:11: Warning: unterminated string; newline inserted 
pstring.s:12: Warning: unterminated string; newline inserted 
pstring.s:13: Warning: unterminated string; newline inserted 
pstring.s:14: Warning: unterminated string; newline inserted 
pstring.s:15: Warning: unterminated string; newline inserted 
pstring.s:16: Warning: unterminated string; newline inserted 
pstring.s:17: Warning: unterminated string; newline inserted 
pstring.s:18: Warning: unterminated string; newline inserted 
pstring.s:19: Warning: unterminated string; newline inserted 
pstring.s:20: Warning: unterminated string; newline inserted 
pstring.s:21: Warning: unterminated string; newline inserted 
pstring.s:22: Warning: unterminated string; newline inserted 
pstring.s:23: Warning: unterminated string; newline inserted 
pstring.s:24: Warning: unterminated string; newline inserted 
pstring.s:25: Warning: unterminated string; newline inserted 
pstring.s:26: Warning: unterminated string; newline inserted 
pstring.s:27: Warning: unterminated string; newline inserted 
pstring.s:28: Warning: unterminated string; newline inserted 
pstring.s:29: Warning: unterminated string; newline inserted 
pstring.s:30: Warning: unterminated string; newline inserted 
pstring.s:31: Warning: unterminated string; newline inserted 
pstring.s:32: Warning: unterminated string; newline inserted 
pstring.s:33: Warning: unterminated string; newline inserted 
pstring.s:34: Warning: unterminated string; newline inserted 
pstring.s:35: Warning: unterminated string; newline inserted 
pstring.s:36: Warning: unterminated string; newline inserted 
pstring.s:37: Warning: unterminated string; newline inserted 
pstring.s:38: Warning: unterminated string; newline inserted 
pstring.s:39: Warning: unterminated string; newline inserted 
pstring.s:40: Warning: unterminated string; newline inserted 
pstring.s:41: Warning: unterminated string; newline inserted 
pstring.s:42: Warning: unterminated string; newline inserted 
pstring.s:43: Warning: unterminated string; newline inserted 
pstring.s:44: Warning: unterminated string; newline inserted 
pstring.s:45: Warning: unterminated string; newline inserted 
pstring.s:46: Warning: unterminated string; newline inserted 
pstring.s:47: Warning: unterminated string; newline inserted 
pstring.s:48: Warning: unterminated string; newline inserted 
pstring.s:49: Warning: unterminated string; newline inserted 
pstring.s:50: Warning: unterminated string; newline inserted 
pstring.s:51: Warning: unterminated string; newline inserted 
pstring.s:52: Warning: unterminated string; newline inserted 
pstring.s:53: Warning: unterminated string; newline inserted 
pstring.s:54: Warning: unterminated string; newline inserted 
pstring.s:55: Warning: unterminated string; newline inserted 
pstring.s:56: Warning: unterminated string; newline inserted 
pstring.s:57: Warning: unterminated string; newline inserted 
pstring.s:58: Warning: unterminated string; newline inserted 
pstring.s:59: Warning: unterminated string; newline inserted 
pstring.s:60: Warning: unterminated string; newline inserted 
pstring.s:61: Warning: unterminated string; newline inserted 
pstring.s:62: Warning: unterminated string; newline inserted 
pstring.s:63: Warning: unterminated string; newline inserted 
pstring.s:64: Warning: unterminated string; newline inserted 
pstring.s:65: Warning: unterminated string; newline inserted 
pstring.s:66: Warning: unterminated string; newline inserted 
pstring.s:67: Warning: unterminated string; newline inserted 
pstring.s:68: Warning: unterminated string; newline inserted 
pstring.s:69: Warning: unterminated string; newline inserted 
pstring.s:70: Warning: unterminated string; newline inserted 
pstring.s:71: Warning: unterminated string; newline inserted 
pstring.s:72: Warning: unterminated string; newline inserted 
pstring.s:73: Warning: unterminated string; newline inserted 
pstring.s:74: Warning: unterminated string; newline inserted 
pstring.s:75: Warning: unterminated string; newline inserted 
pstring.s:76: Warning: unterminated string; newline inserted 
pstring.s:77: Warning: unterminated string; newline inserted 
pstring.s:78: Warning: unterminated string; newline inserted 
pstring.s:79: Warning: unterminated string; newline inserted 
pstring.s:80: Warning: unterminated string; newline inserted 
pstring.s:81: Warning: unterminated string; newline inserted 
pstring.s:82: Warning: unterminated string; newline inserted 
pstring.s:83: Warning: unterminated string; newline inserted 
pstring.s:84: Warning: unterminated string; newline inserted 
pstring.s:85: Warning: unterminated string; newline inserted 
pstring.s:86: Warning: unterminated string; newline inserted 
pstring.s:87: Warning: unterminated string; newline inserted 
pstring.s:88: Warning: unterminated string; newline inserted 
pstring.s:89: Warning: unterminated string; newline inserted 
pstring.s:90: Warning: unterminated string; newline inserted 
pstring.s:91: Warning: unterminated string; newline inserted 
pstring.s:92: Warning: unterminated string; newline inserted 
pstring.s:93: Warning: unterminated string; newline inserted 
pstring.s:94: Warning: unterminated string; newline inserted 
pstring.s:95: Warning: unterminated string; newline inserted 
pstring.s:96: Warning: unterminated string; newline inserted 
pstring.s:97: Warning: unterminated string; newline inserted 
pstring.s:98: Warning: unterminated string; newline inserted 
pstring.s:99: Warning: unterminated string; newline inserted 
pstring.s:100: Warning: unterminated string; newline inserted 
pstring.s:101: Warning: unterminated string; newline inserted 
pstring.s:102: Warning: unterminated string; newline inserted 
pstring.s:103: Warning: unterminated string; newline inserted 
pstring.s:104: Warning: unterminated string; newline inserted 
pstring.s:105: Warning: unterminated string; newline inserted 
pstring.s:106: Warning: unterminated string; newline inserted 
pstring.s:107: Warning: unterminated string; newline inserted 
pstring.s:108: Warning: unterminated string; newline inserted 
pstring.s:109: Warning: unterminated string; newline inserted 
pstring.s:110: Warning: unterminated string; newline inserted 
pstring.s:111: Warning: unterminated string; newline inserted 
pstring.s:112: Warning: unterminated string; newline inserted 
pstring.s:113: Warning: unterminated string; newline inserted 
pstring.s:114: Warning: unterminated string; newline inserted 
pstring.s:115: Warning: unterminated string; newline inserted 
pstring.s:116: Warning: unterminated string; newline inserted 
pstring.s:117: Warning: unterminated string; newline inserted 
pstring.s:118: Warning: unterminated string; newline inserted 
pstring.s:119: Warning: unterminated string; newline inserted 
pstring.s:120: Warning: unterminated string; newline inserted 
pstring.s:121: Warning: unterminated string; newline inserted 
pstring.s:122: Warning: unterminated string; newline inserted 
pstring.s:123: Warning: unterminated string; newline inserted 
pstring.s:124: Warning: unterminated string; newline inserted 
pstring.s:125: Warning: unterminated string; newline inserted 
pstring.s:126: Warning: unterminated string; newline inserted 
pstring.s:127: Warning: unterminated string; newline inserted 
pstring.s:128: Warning: unterminated string; newline inserted 
pstring.s:129: Warning: unterminated string; newline inserted 
pstring.s:130: Warning: unterminated string; newline inserted 
pstring.s:131: Warning: unterminated string; newline inserted 
pstring.s:132: Warning: unterminated string; newline inserted 
pstring.s:133: Warning: unterminated string; newline inserted 
pstring.s:134: Warning: unterminated string; newline inserted 
pstring.s:135: Warning: unterminated string; newline inserted 
pstring.s:136: Warning: unterminated string; newline inserted 
pstring.s:137: Warning: unterminated string; newline inserted 
pstring.s:138: Warning: unterminated string; newline inserted 
pstring.s:139: Warning: unterminated string; newline inserted 
pstring.s:140: Warning: unterminated string; newline inserted 
pstring.s:141: Warning: unterminated string; newline inserted 
pstring.s:142: Warning: unterminated string; newline inserted 
pstring.s:143: Warning: unterminated string; newline inserted 
pstring.s:144: Warning: unterminated string; newline inserted 
pstring.s:145: Warning: unterminated string; newline inserted 
pstring.s:146: Warning: unterminated string; newline inserted 
pstring.s:147: Warning: unterminated string; newline inserted 
pstring.s:148: Warning: unterminated string; newline inserted 
pstring.s:149: Warning: unterminated string; newline inserted 
pstring.s:150: Warning: unterminated string; newline inserted 
pstring.s:151: Warning: unterminated string; newline inserted 
pstring.s:152: Warning: unterminated string; newline inserted 
pstring.s:153: Warning: unterminated string; newline inserted 
pstring.s:154: Warning: unterminated string; newline inserted 
pstring.s:155: Warning: unterminated string; newline inserted 
pstring.s:156: Warning: unterminated string; newline inserted 
pstring.s:157: Warning: unterminated string; newline inserted 
pstring.s:158: Warning: unterminated string; newline inserted 
pstring.s:159: Warning: unterminated string; newline inserted 
pstring.s:160: Warning: unterminated string; newline inserted 
pstring.s:161: Warning: unterminated string; newline inserted 
pstring.s:162: Warning: unterminated string; newline inserted 
pstring.s:163: Warning: unterminated string; newline inserted 
pstring.s:164: Warning: unterminated string; newline inserted 
pstring.s:165: Warning: unterminated string; newline inserted 
pstring.s:166: Warning: unterminated string; newline inserted 
pstring.s:167: Warning: unterminated string; newline inserted 
pstring.s:168: Warning: unterminated string; newline inserted 
pstring.s:169: Warning: unterminated string; newline inserted 
pstring.s:170: Warning: unterminated string; newline inserted 
pstring.s:171: Warning: unterminated string; newline inserted 
pstring.s:172: Warning: unterminated string; newline inserted 
pstring.s:173: Warning: unterminated string; newline inserted 
pstring.s:174: Warning: unterminated string; newline inserted 
pstring.s:175: Warning: unterminated string; newline inserted 
pstring.s:176: Warning: unterminated string; newline inserted 
pstring.s:177: Warning: unterminated string; newline inserted 
pstring.s:178: Warning: unterminated string; newline inserted 
pstring.s:179: Warning: unterminated string; newline inserted 
pstring.s:180: Warning: unterminated string; newline inserted 
pstring.s:181: Warning: unterminated string; newline inserted 
pstring.s:182: Warning: unterminated string; newline inserted 
pstring.s:183: Warning: unterminated string; newline inserted 
pstring.s:184: Warning: unterminated string; newline inserted 
pstring.s:185: Warning: unterminated string; newline inserted 
pstring.s:186: Warning: unterminated string; newline inserted 
pstring.s:187: Warning: unterminated string; newline inserted 
pstring.s:188: Warning: unterminated string; newline inserted 
pstring.s:189: Warning: unterminated string; newline inserted 
pstring.s:190: Warning: unterminated string; newline inserted 
pstring.s:191: Warning: unterminated string; newline inserted 
pstring.s:192: Warning: unterminated string; newline inserted 
pstring.s:193: Warning: unterminated string; newline inserted 
pstring.s:194: Warning: unterminated string; newline inserted 
pstring.s:195: Warning: unterminated string; newline inserted 
pstring.s:196: Warning: unterminated string; newline inserted 
pstring.s:197: Warning: unterminated string; newline inserted 
pstring.s:198: Warning: unterminated string; newline inserted 
pstring.s:199: Warning: unterminated string; newline inserted 
pstring.s:200: Warning: unterminated string; newline inserted 
pstring.s:201: Warning: unterminated string; newline inserted 
pstring.s:202: Warning: unterminated string; newline inserted 
pstring.s:203: Warning: unterminated string; newline inserted 
pstring.s:204: Warning: unterminated string; newline inserted 
pstring.s:205: Warning: unterminated string; newline inserted 
pstring.s:206: Warning: unterminated string; newline inserted 
pstring.s:207: Warning: unterminated string; newline inserted 
pstring.s:208: Warning: unterminated string; newline inserted 
pstring.s:209: Warning: unterminated string; newline inserted 
pstring.s:210: Warning: unterminated string; newline inserted 
pstring.s:211: Warning: unterminated string; newline inserted 
pstring.s:212: Warning: unterminated string; newline inserted 
pstring.s:213: Warning: unterminated string; newline inserted 
pstring.s:214: Warning: unterminated string; newline inserted 
pstring.s:215: Warning: unterminated string; newline inserted 
pstring.s:216: Warning: unterminated string; newline inserted 
pstring.s:217: Warning: unterminated string; newline inserted 
pstring.s:218: Warning: unterminated string; newline inserted 
pstring.s:219: Warning: unterminated string; newline inserted 
pstring.s:220: Warning: unterminated string; newline inserted 
pstring.s:221: Warning: unterminated string; newline inserted 
pstring.s:222: Warning: unterminated string; newline inserted 
pstring.s:223: Warning: unterminated string; newline inserted 
pstring.s:224: Warning: unterminated string; newline inserted 
pstring.s:225: Warning: unterminated string; newline inserted 
pstring.s:226: Warning: unterminated string; newline inserted 
pstring.s:227: Warning: unterminated string; newline inserted 
pstring.s:228: Warning: unterminated string; newline inserted 
pstring.s:229: Warning: unterminated string; newline inserted 
pstring.s:230: Warning: unterminated string; newline inserted 
pstring.s:231: Warning: unterminated string; newline inserted 
pstring.s:232: Warning: unterminated string; newline inserted 
pstring.s:233: Warning: unterminated string; newline inserted 
pstring.s:234: Warning: unterminated string; newline inserted 
pstring.s:235: Warning: unterminated string; newline inserted 

321123242 Nikolay Babkin 
    .section .rodata 
error:  .string "invalid input!\n' # error message. 

    .text 

    .global pstrlen   #receives a pointer to a pstring as argument. 
    .type pstrlen, @function #returns the length as a byte. 
pstrlen: 
    pushl %ebp   #save old FP. 
    movl %esp, %ebp  #set new FP. 

    movl 8(%ebp), %eax  #retrieve pointer to pstring. 
    movb (%eax), %al  #copy the first byte of the argument into %al 
    movzbl %al, %eax  #Zero-fill the other 3 bytes of the register. 

    movl %ebp, %esp  #restore the old stack pointer - release all used memory. 
    popl %ebp   #restore old frame pointer (the caller function frame) 
    ret    #return to caller function 

    .global replaceChar  #receives a pointer to a pstring, a oldChar byte and a newChar byte as arguments. 
    .type replaceChar, @function #replaces all oldChars with newChars and returns the pointer to the pstring 
replaceChar: 
    pushl %ebp   #save old FP 
    movl %esp, %ebp  #set new FP 

    pushl %ebx   #save %ebx on stack 

    movl 8(%ebp), %eax  #get the pstring pointer from the stack. 
    movb (%eax), %bh  #retrieved the len of the pstring 
    addl $1, %eax  #align the pointer to point to the string itself 
    movl 12(%ebp), %ecx  #get the oldChar argument. 
    movb %cl, %dl  #store oldChar in %dl 
    movl 16(%ebp), %ecx  #get the newChar argument. 
    movb %cl, %dh  #store newChar in %dh 

    movb $0, %bl   #initialize count register to 1. 

    rcTEST: 
    cmpb %bh, %bl  #Test 
    je rcDONE   #if Test: goto done 

    rcLOOP:    #loop label 
    cmpb %dl, (%eax)  #compare the current byte to the oldChar byte 
    je rcCHANGE  #jump to change the oldChar. 
    rcINCREMENT:   #label for incrementing the current char and the count variable. 
    add $1, %bl   #increment the count 
    add $1, %eax  #increment the string pointer one byte. 
    jmp rcTEST   #Don't want no infinite loops causing segmentation faults, do we? 
    rcCHANGE: 
    movb %dh, (%eax)  #overwrite the oldChar with a newChar 
    jmp rcINCREMENT  #move on with the loop mechanism 

    rcDONE: 
    mov 8(%ebp), %eax  #set return value to be the pstring pointer. 
    popl %ebx   #restore %ebx register. 
    movl %ebp, %esp  #restore the old stack pointer - release all used memory. 
    popl %ebp   #restore old frame pointer (the caller function frame) 
    ret    #return to caller function 

    .global pstrijcpy 
    .type pstrijcpy, @function 
pstrijcpy: 
    pushl %ebp   #save old FP 
    movl %esp, %ebp  #set new FP 
#using eax, ebx, ech, edx, 
    pushl %ebx   #back %ebx up. 

    movl 16(%ebp), %eax  #the dword with i 
    movb %al, %bl  #store i in %bl 
    movl 20(%ebp), %eax  #the dword with j 
    movb %al, %bh  #store j in %bh 
    movl 8(%ebp), %eax  #initialize eax to dst ptr. 
    movb (%eax), %dh  #%dh <- dst.len 
    addl $1, %eax  #advance %eax by one byte to the string 
    movl 12(%ebp), %ecx  #initialize ecx to src ptr. 
    mov (%ecx), %dl  #%dl <- src.len 
    addl $1, %ecx  #advance %ecx by one byte to the string 

    cmpb %dl, %bl  #i-src.len 
    jg cpyERROR  #if >: goto error 
    cmp %dl, %bh  #j-src.len 
    jg cpyERROR  #if >: goto error 
    cmpb %dh, %bl  #i-dst.len 
    jg cpyERROR  #if >: goto error 
    cmp %dh, %bh  #j-dst.len 
    jg cpyERROR  #if >: goto error 

    #now I will add i to the pointers that point to the strings. 
    push %edx   #back edx up 
    movzbl %bl, %edx  #apparently I can use 'movl %bl, %eax', so I did this. 
    addl %edx, %eax  #advance dst to ith character 
    addl %edx, %ecx  #advance src to ith character 
    popl %edx   #restore edx 

    cpyTEST: 
    cmpb %bh, %bl  #compare i with j 
    jg cpyDONE   #once i is greater than j, we are done. 

    cpyLOOP: 
    movb (%ecx), %dl  #Since I already checked that i and j <= the lengths, I can use them 
    movb %dl, (%eax)  #Move byte from src to dst. 
    addl $1, %ecx  #Increment src to next byte 
    addl $1, %eax  #Increment dst to next byte 
    addl $1, %ebx  #Increment i by 1. 
    jmp cpyTEST   #goto test 

    cpyERROR:   #don't need to back registers up. 
    pushl $error   #push the message to be printed. 
    call printf   #use printf to print error message 

    cpyDONE: 
    popl %ebx   #restore %ebx 
    movl 8(%ebp), %eax  #set return value to be dst pointer. 
    movl %ebp, %esp  #restore the old stack pointer - release all used memory. 
    popl %ebp   #restore old frame pointer (the caller function frame) 
    ret    #return to caller function 

    .global swapCase  #swaps the cases of the string. 
    .type swapCase, @function 
swapCase: 
    pushl %ebp   #save old FP 
    movl %esp, %ebp  #set new FP 

    movl 8(%ebp), %eax  #get pointer to pstring 
    movb (%eax), %cl  #get length of pstring 
    addl $1, %eax  #move pointer to string itself 

    scLTEST:   #loop condition. 
    cmpb $0, %cl   #compare length with 0 
    je scDONE   #if length is zero, goto done 
    jmp scLOOP   #else: goto loop 

    scLOOP: 
    cmpb $97, (%eax)  #compares first byte of string with 'a'. 
    jge scTRYLOWER  #byte is lowercase-possible. 
    cmpb $90, (%eax)  #compares first byte of string with 'Z'. 
    jle scTRYUPPER  #byte is uppercase-possible. 
    jmp scINC   #byte is between 65 and 97, so not a letter. 

    scTRYUPPER:   #checking if byte is really upper-case. 
    cmpb $65, (%eax)  #compare byte with 'A'. 
    jge scCHANGETOLOWER  #if byte is 'A' or after, it is upper-case, so change to lower-case. 
    jmp scINC   #otherwise, it is below 'A' and is thus not a letter. 

    scTRYLOWER: 
    cmpb $122, (%eax)  #compare byte with 'z'. 
    jle scCHANGETOUPPER  #if it is before or at 'z', it is a lower-case letter. 
    jmp scINC   #otherwise, it is over 'z' and not a letter. 

    scCHANGETOUPPER: 
    subb $32, (%eax)  #reduce the byte from range [97,122] to [65,90] 
    jmp scINC 

    scCHANGETOLOWER: 
    addb $32, (%eax)  #increase the byte to range [97,122] from [65,90] 
    #jmp scINC   #for now, the jump is not necessary since the increment stage is already after it. 

    scINC: 
    addl $1, %eax  #increment %eax to next byte 
    decb %cl   #decrement counter 
    jmp scLTEST   #end current loop iteration 

    scDONE: 
    movl 8(%ebp), %eax  #set return value to pointer to pstring. 
    movl %ebp, %esp  #restore old stack pointer 
    popl %ebp   #restore old FP 
    ret    #return to caller function 

    .global pstrijcmp  #compares pstring1 and pstring 2 in range i to j. 
    .type pstrijcmp, @function #returns -1 if pstring1 < pstring2, 0 if equal and 1 if greater. -2 is error value. 
pstrijcmp: 
    pushl %ebp   #save old FP 
    movl %esp, %ebp  #set new FP 

    pushl %ebx   #back %ebx up. 

    movl 16(%ebp), %eax  #retrieve the dword with i. 
    movb %al, %ch  #set %ch to be i. 
    movl 20(%ebp), %eax  #retrieve the dword with j. 
    movb %al, %cl  #set %cl to be j. 

    movl 8(%ebp), %eax  #set pstring1ptr into eax. 
    movl 12(%ebp), %edx  #set pstring2ptr into edx. 

    cmpb (%eax), %ch  #i-str1.len 
    jg cmpERROR  #if i>len: goto error 
    cmp (%eax), %cl  #j-str1.len 
    jg cmpERROR  #if jlen>: goto error 
    cmpb (%edx), %ch  #i-str2.len 
    jg cmpERROR  #if i>len2: goto error 
    cmp (%edx), %cl  #j-str2.len 
    jg cmpERROR  #if j>len2: goto error 

    incl %eax   #increment eax to get past the length byte 
    incl %edx   #increment edx to get past the length byte 

    cmpTEST: 
    cmpb %cl, %ch  #compare i with j 
    jg cmpPREDONE   #goto done once i>j 
    #jmp cmpLOOP   #else: goto loop 

    cmpLOOP: 
    movb (%eax), %bl  #take current str1 byte into %bl 
    cmpb %bl, (%edx)  #compare %bl with first %edx byte 
    je cmpINC   #if same: increment phase. 
    jl cmpLESS   #str1 is before str2 lexicographically. 
    movl $1, %eax  #set return value to 1. 
    jmp cmpDONE   #done. 

    cmpLESS: 
    movl $-1, %eax  #set return value to -1 
    jmp cmpDONE   #done 

    cmpINC: 
    incl %eax   #increment str1 pointer. 
    incl %edx   #increment str2 pointer. 
    incb %ch   #i++ 
    jmp cmpTEST   #current loop iteration is over. 

    cmpERROR:   #don't need to back registers up. 
    pushl $error   #push the message to be printed. 
    call printf   #use printf to print error message 
    movl $-2, %eax  #set return value to -2 
    jmp cmpDONE 

    cmpPREDONE: 
    movl $0, %eax  #set return value to 0. 

    cmpDONE: 
    popl %ebx   #restore old %ebx 
    movl %ebp, %esp  #restore old stack pointer 
    popl %ebp   #restore old FP 
    ret    #return to caller function 

回答

1

該錯誤是在第3行,如消息的內容。您有"string'而不是"string"。 (注意結束報價)。

此外,諸如cmpb指令上的「測試」等評論是無用的。你應該評論爲什麼代碼做它的功能,或者至少涉及哪些數據。我知道寫一些像insn ref手冊那樣的評論是很誘人的,但是不要。

movb $0, %bl #initialize count register to 1.特別有趣。

此外,縮進你的代碼比你的標籤多一級,所以他們脫穎而出。

維基有很多很好的鏈接,順便說一句。

+0

這就是我讀偏頭痛的東西。 – Sunspawn

+0

感謝患者的迴應。是的,這些評論並沒有特別的啓發 - 我的藉口是,我有更大的頭痛來處理(有時是字面上的),我堅持它。計數記錄器雖然不錯,但可能還是會有所改變。總的來說,謝謝,一旦我設法釋放了一段時間,我就會瀏覽那個wiki。 – Sunspawn

相關問題